指针是C语言的重要概念

指针是C语言的重要概念

ID:41526762

大小:205.01 KB

页数:45页

时间:2019-08-26

指针是C语言的重要概念_第1页
指针是C语言的重要概念_第2页
指针是C语言的重要概念_第3页
指针是C语言的重要概念_第4页
指针是C语言的重要概念_第5页
资源描述:

《指针是C语言的重要概念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章指针指针是C语言的重要概念,是C语言的特色,是C语言的精华。10.1地址和指针的概念内存中的每一个字节都有一个地址。内存单元的地址与内存单元的内容是两个完全不同的概念。在编译时给出了变量名和地址的对应关系。以前在程序中定义整形等变量。如inta,b;表示a和b申请整形单元,分别存放两个整形值。我们也可以定义一种特殊的变量,它用来存放内存单元地址。这种变量的值是一个地址,它的作用是:根据地址去找相应的单元,因此,这种装载地址的变量又可称为“指针变量”。指针变量的值就是指针即地址。10.2变量的指针和指向变量的指针变量变

2、量的指针就是变量的地址。存放地址的变量称谓指针变量。为了表示指针变量和它所指向的变量之间联系,程序中用*符号表示“指向”如用i_point表示指针变量,而*i_point就表示i_point指向的变量。10.2.1定义一个指针变量C语言规定所有变量在使用前必须定义,指定其类型,并按此分配内存单元。inti,j;int*point1,*point2;定义了两个指向整形变量的指针变量。定义指针变量要指定“基类型”基类型是指针变量指向的变量的类型。指针变量的定义形式:基类型*指针变量名那么如何给指针变量赋值呢?point1=&i

3、;point1=&j;10.2.2指针变量的引用指针变量只能存放地址(指针),有两个有关的运算符:(1)&:取址运算符,&a(2)*:指针运算符(“间接运算符”),*pmain(){inta,b;int*point1,*point2;a=100;b=20;point1=&a;point2=&b;printf(“%d,%d”,a,b);printf(“%d,%d”,*point1,*point2);}point1=&*point2;?b=*&a;?main(){int*p1,*p2,*p,a,b;a=10;b=90;

4、p1=&a;p2=&b;if(a

5、2);}10.3数组的指针和指向数组的指针变量一个变量有地址,一个数组包括若干个元素,每个元素都有地址.数组的指针是指数组的起始元素的地址.引用数组元素可用下标法,也可用指针法,即用指针指向所引用的元素.10.3.1指向数组元素的指针inta[10];int*p;p=&a[8];C语言规定数组名代表数组的首地址,也就是第0号元素的地址.下面两个句子等价:p=&a[0];p=a;10.3.2通过指针引用数组元素按C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素(而不是将的p的值简单加1).

6、如果p的初值为&a[0],则(1)p+i和a+i就是a[i]的地址(2)*(p+i)和*(a+i)是p+i和a+i所指向的数组元素,即a[i]。可以看出,[]实际上是变址运算符(3)指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价.10.3.3用数组名作函数参数例:main()inv(intarr[],intn){intarray[10];{::inv(array,10);}:}用数组名作参数时,如果形参数组中各元素值发生变化,实参数组值随之变化.voidinv(intarr[],intn){intt,i,j,

7、m=(n-1)/2;for(i=0;i<=m;i++){j=n-1-i;t=arr[i];arr[i]=arr[j];arr[j]=t;}}main(){inti,a[10]={2,4,54,6,7,3,31,56,23,65};inv(a,10);for(i=0;i<=9;i++)printf(“%d”,a[i]);}f(intarr[],intn)等价于f(int*arr,intn)例:函数定义为:函数调用为:voidswap(intx,inty)swap(a[1],a[2]);请大家注意:(1)“值传递”和“地址传递

8、”(2)两者之间的异同点intm1,m2;voidm_value(intarray[],intn){int*p,*array_end;array_end=array+n;m1=m2=*array;for(p=array+1;pm1)m1=*p;elseif(*p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。