浅析c语言中指针与数组

浅析c语言中指针与数组

ID:19255844

大小:67.00 KB

页数:6页

时间:2018-09-30

浅析c语言中指针与数组_第1页
浅析c语言中指针与数组_第2页
浅析c语言中指针与数组_第3页
浅析c语言中指针与数组_第4页
浅析c语言中指针与数组_第5页
资源描述:

《浅析c语言中指针与数组》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、浅析C语言中的指针与数组指针是C语言中的精华,正确灵活的应用指针,能动态的分配内存,有效的表示复杂的数据结构,方便的使用数组。指针极大丰富了C语言的功能。指针就是地址,指针变量是专门存放地址的变量;指针从级别上来讲常用的有一级指针、二级指针。一级指针每次加1表示下移一个基类型的字节数(列移动);二级指针每次加1表示下移一组基类型的字节数(行移动)。从性质来讲有常量指针与变量指针。常量指针就是数组名,它的值是不能改变的,不能放在赋值符号的左边。变量指针的值是允许被改变的,可以根据需要在程序的不同位置赋不同的值。数组是一组具有相同数据类型的有序数据的集合

2、,在内存中表现为一块连续的存储区域。引入数组可以大大减少程序中变量的数量,使程序精练,而且数组含义清楚,使用方便,明确反映了数据间的关系。指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。1.一级指针与一级数组:例如:inta[10];    int*pa;在编译

3、器编译时将会给a[10]分配一块固定的内存,而pa指向的位置则是随机的。因此,指针在使用前需要对它的值进行初始化。pa=&a[0];可以将指针pa指向数组a的第0个元素,也就是说,pa的值为数组元素a[0]的地址,此时pa指向数组a所处固定内存块的开始。x=*pa;  将把数组元素a[0]中的内容复制到变量x中pa+1;如果pa指向数组中的某个特定元素,那么,根据指针运算的定义,pa+1将指向下一个元素.pa+i;将指向pa所指向数组元素之后的第i个元素.pa-i;将指向pa所指向数组元素之前的第i个元素.因此,如果指针pa指向a[0],那么*(pa

4、+1)引用的是数组元素a[3]的内容,pa+i是数组元素a的地址,*(pa+i)引用的是数组元素a的内容.pa=&a[0];  pa==a;pa和a具有相同的值,因为数组名所代表的就是该数组最开始的一个元素的地址对数组元素a的引用也可以写成*(a+i)这种形式在计算数组元素a的值时,C语言实际上先将其转换为*(a+i)的形式,然后再进行求值,因此在程序中这两种形式是等价的&a  a+i;  两者等价,a+i是a之后第i个元素的地址pa  *(pa+i)如果pa是一个指针,那么,在表达式中也可以在它的后面加下标如pa[i]来表示pa指向的位置之后的第i

5、个地址的内容。下面从键盘输入10个数,以数组的不同引用形式输出数组各元素的值。[例1]以下标法输入输出数组各元素#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,0};intn;printf("下标法输出:");for(n=0;n<10;n++)printf("%4d",a[n]);printf("");}运行程序:下标法输出:1234567890[例2]采用指针变量输入输出数组各元素。#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,

6、0};intn;int*ptr=NULL;/*定义时对指针变量初始化*/ptr=a;/*a是数组的首地址将数组的首地址送给指针变量ptr*/printf("指针变量输出:");for(n=0;n<10;n++)printf("%4d",*(ptr+n));printf("");}运行程序:指针变量输出:1234567890[例3]采用数组名表示的地址法输入输出数组各元素。#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,0};intn;printf("数组名表示地址输出:");for(

7、n=0;n<10;n++)printf("%4d",*(a+n));printf("");}运行程序:数组名表示地址输出:1234567890[例4]用指针表示的下标法输入输出数组各元素。#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,0};intn;int*ptr=NULL;/*定义时对指针变量初始化*/ptr=&a[0];/*取数组第一个元素的地址送给指针变量ptr*/printf("指针表示的下标法输出:");for(n=0;n<10;n++)printf("%4d",ptr[n]

8、);printf("");}运行程序:指针表示的下标法输出1234567890[例5]利用指针法输入输出

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

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

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