当前位置: 首页 > news >正文

电视台网站建设方案.doc/爱站站长工具

电视台网站建设方案.doc,爱站站长工具,wordpress 判断登录页面跳转,成都市住房和城乡建设局电话2019独角兽企业重金招聘Python工程师标准>>> 一、指针与数组和字符串 1、指针与数组 当声明数时,编译器在连续的内存空间分配基本地址和足够的储存空间,以容纳数组的所有元素。基本地址是数组第一个元素(索引为0)的存储…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、指针与数组和字符串

1、指针与数组

当声明数时,编译器在连续的内存空间分配基本地址和足够的储存空间,以容纳数组的所有元素。基本地址是数组第一个元素(索引为0)的存储位置。编译器还把数组名定义为指向第一个元素的常量指针。

元素的地址是通过索引和数据类型的比例因子来计算的;例如: x[3]的地址 = 基本地址 + (3 x 整型数据的比例因子)

如何表示元素a[i][j]的(其中:int *p; p = a;);

012345
1
2
3
4
  • p----指向第 0 行的指针;
  • p + i----指向第 i 行的指针;
  • *(p+i)----指向第 i 行的第一个元素的指针;
  • *(p+i)+j----指向第 i 行第 j 个元素的指针;
  • *((p+i)+j)----存储在(i, j)单元(即第 i 行第 j 列)的值。

数组 a 的基本地址为 &a[0][0],从这个地址开始,编译器按行为所有的元素分配连续的存储空间。例如:

int a[3][4] ={{15,27,11,35},{22,19,31,17},{31,23,14,36}
}

数组a的存储如下:

|15 |27| 11| 35 |22 |19 |31 |17 |31 |23 |14 |36 | |--

如果把 p 声明为整型指针,并且初始地址为a[0][0](),那么:

a[i][j] = *(p+4*i+j);

2、指针与字符串

C语言支持另一种创建字符串的方法,即使用char类型的指针变量。例如:

char *str = "good";

上述声明语句创建了一个文本字符串,然后将其地址保存在指针变量str中;这样指针 str 就指向字符串 “good” 的第一个字符,如下所示:

|g(str) | o | o | d | \0 | |--

由此,可以用指针访问整个字符串:

printf("%s",str);
put(str);

当然,也可以用指针来访问字符串中的单个字符。

3、指针数组

指针的一项重要的应用就是处理字符串表,特别是处理行的长度可变的“凹凸不平的数组”时;例如:

char *name[3] = { "New Zealand", "Australia", "India" };

上面的声明语句只分配了28个字符,这足以保存所有的字符,具体如下:

|N| e |w | |Z |e |a |l |a| n| d| \0| |-- |A| u| s| t| r| a| l| i| a| \0| |I| n| d| i| a| \0| 下面的语句可以用来显示着三个名称:

for(i = 0; i <= 2; i++)  printf("%s\n",name[i]);

要访问第 i 个名称的第 j 个字符,可以这样编写语句:

char c = *(name[i]+j);

二、指针与函数

1、将指针作为函数的参数

使用指针传递变量地址的函数调用过程称为引用调用(我们已经说过,传递变量实际值的过程称为 “按值调用”)。引用调用提供了一种机制,让被调用的函数可以修改调用函数中存储的值。 请注意以下代码:

//例一
void exchange(int *a, int *b)
{int t;t=*a;*a=*b;*b=t;
}
void main()
{int x, y;x = 100;y = 200;printf("%d ,%d\\n",x,y);exchange(&x,&y);printf("%d ,%d\\n",x,y);
}
//例二
void exchange(int *a, int *b)
{int *t;t=a;a=b;b=t;printf("%d ,%d\n", *a, *b);
}void main()
{int x, y;x = 100;y = 200;printf("%d ,%d\n", x, y);exchange(&x,&y);printf("%d ,%d\n", x, y);
}

代码例二并不会使x,y的值发生互换,因为当函数指针a,b获得x,y的地址后,作为值进行储存,交换a,b的值并没有改变其值(x,y的地址)指向的x,y的值。

2、函数返回指针

指针是C语言的一种数据类型,因此也可以使用函数返回一个指向调用函数的指针。请看下面的代码:

int  *larger(int* , int*);/*prototype*/main()
{int a = 10;int b = 20;int  *p;p = larger(&a, &b);/*Function call*/printf("%d",p);
}
int *larger(int *x, int *y)
{if(*x > *y)return(x);/*address of a*/elsereturn(y);/*address of b*/
}

注意:返回的地址必须是调用函数中变量的地址。如果返回的是指向被调用函数中局部变量的地址;将产生错误。

3、指向函数的指针

与变量一样,函数也属于某种数据类型,在内存中也需要有储存地址。因此可以声明一个指向函数的指针。如同指向字符数组的指针,可以接收任意大小的字符数组一样,指向函数的指针可以指向任意的函数,如此可以减少函数的数量,使函数的功能更加强大。指向函数的指针声明如下:

type (*fptr)();

该语句告诉编译器,fptr为指向函数的的指针,返回type类型的值。用括号把*fptr括起来是必要的。记住,下面的语句:

type *gptr();

表示的是把gptr声明为函数,它返回一个指向type类型的指针。

请仔细关注以下代码:

#include<stdio.h>
#include<math.h>
#define PI 3.1415926double table(double (*f)(), double, double, double);
double y(double);
double cos(double);double table(double (*f)(), double min, double max, double step)
{double a, value;for(a = min;a <= max; a+=step){value = (*f)(a);printf("%5.2f %10.4f\n,a,value");}
}double y(double x)
{return (2*x*x-x+1);
}void main()
{printf("table of y(x) = 2*x*x-x+1\n\n");table(y, 0.0, 2.0, 0.5);printf("table of cos(x)\n\n");table(cos, 0.0, PI, 0.5);
}

三、指针与结构体

在前面章节中,我们讨论把结构体作为参数传递给函数。我们还看到这样的实例,其中函数接收整个结构体的副本,并在运行后把他返回给调用函数。正如我们前面介绍的那样,该方法无论是在运行速度还是在内存使用上都不是高效的。通过以指向结构体的指针作为传递参数,然后使用指针来操纵结构体成员,就可以克服该缺点。请看以下函数:

print_invent(struct *item)
{printf("Name: %s\n", item->name);printf("price:%f\n", item->price);
}

该函数可以用下面的语句来调用:

print_invent(&product);

请关注以下两点:

  1. 数组名表示的是第0个元素的地址。结构体变量的数组名也是如此;
  2. 运算符“->”、“.”、“()”和“[]”的有先级最高。正确理解优先级及关联性非常重要。

转载于:https://my.oschina.net/u/3471006/blog/1838528

http://www.jmfq.cn/news/4889341.html

相关文章:

  • 建设部网站施工合同范本去哪找/关键词首页排名优化公司推荐
  • 品牌建设 厚植/大连谷歌seo
  • 做网站标准步骤/seo网站诊断方案
  • flash网站制作教程/时空seo助手
  • 做网站解析要多久/网站推广排名哪家公司好
  • 外卖网站那家做的好/发软文
  • 明天上海全面封控/深圳网站优化培训
  • 周到的做pc端网站/关键词推广操作
  • 杭州市建设住房保障局网站/360关键词排名百度
  • 怎样购买起名软件自己做网站/全网营销公司
  • 电信做网站吗/上海优化网站方法
  • 山门做网站/网站seo优化软件
  • 重庆所有做网站的公司/seo刷排名工具
  • 网络规划设计师培训视频教程/win10优化软件
  • 查企业年报的网站/长沙seo平台
  • 做我姓什么的网站/免费推广产品的网站
  • html css网站开发兵书/软文写作300字
  • 网站由哪些部分组成部分/百度竞价开户
  • 做塑胶原料用什么网站好/什么平台发广告最有效
  • 诸城做网站的公司/深圳关键词排名seo
  • 网站建设哪里好/宁波百度推广优化
  • 优势网网站/360外链
  • 响应式网站做mip/自贡网站seo
  • 网站建设中销售人员会问客户的问题/公司做网站一般多少钱
  • 网站已经收录了 但是输入公司名找不到/专业网店推广
  • 吉林长春有做网站的吗/如何做营销策划方案
  • 公司付的网站费怎么做分录/长沙网站推广
  • 赣州做网站/google图片搜索
  • 惠州网站建设一般多少钱/seo工具在线访问
  • 室内设计好的大学排名/windows优化大师怎么用