数组指针和指针数组的区别_数组指针定义

数组指针和指针数组的区别_数组指针定义数组指针的用法有哪些?int *a[4]; //指针数组登录后复制指针数组就相当于一次声明了多个指针。数组的每一个素都是一个指针。很好理解,下面主要看数组指针int (*p)[4]; //数组指针登录后复制数组指针就相当于一次声明了一个指针。只不过这个指针指向很特别,是一个数组。[]优先级大于

数组指针的用法有哪些?   
数组指针的用法有哪些?   int *a[4]; //指针数组登录后复制   指针数组就相当于一次声明了多个指针。数组的每一个素都是一个指针。很好理解,下面主要看数组指针   int (*p)[4]; //数组指针登录后复制   数组指针就相当于一次声明了一个指针。只不过这个指针指向很特别,是一个数组。   []优先级大于*,故数组指针声明时要加()。   例1:   #include<stdio.h>#include<stdlib.h>void main() { //数组指针的用法,用处。 int b[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。 //int *p2=&b; p=&b; int i=0; while(i<16) { printf(“%d “,(*p)[i]); //printf(“%d “,*p2++); i++; } }登录后复制   printf(“%d “,(*p)[i]);遍历输出数组b;数组指针就相当于舞王僵尸一样,带了小弟,n就是小弟的个数,通过下标值能直接访问到具体哪一个小弟,即数组里哪一个数   数组指针下标自增(i++)的时候,指针指向不变。   这里直接用整形指针就可实现,而且更方便简洁。见上面被注释部分。   例2:把例1的while()语句替换。   while(i<4) { printf(“%d “,(*p++)[0]); i++; }登录后复制   例2输出1 5 9 13,相当于指针一次移动了4个int.16个字节。   数组指针自增(*p++)时,指针指向移动sizeof(类型)。   其实上句在其他类型指针也适用。   如int *p;   //指针指向了int,就是整型指针,整型指针有啥特点?就是能保存整形变量的地址。有啥用途?就是p++的时候能指向下一个int型数。所以了?经常用指针指向一个数组。因为他们都是int型的,所以推导出步长了?整型指针的步长为sizeof(int),即4字节   //同理可以得出什么float型指针,char型指针什么的。。。   同理就得出了数组指针,特点?保存数组首地址。用途?p++的时候能指向下一个数组。所以了?要用它来指向一个二维数组。因为二维数组里的每一个素都是相同类型的(都是一个int型数组),所以推导出步长了?sizeof(int[4]),即16   //说白了就一指针,指向了数组类型   例3:数组指针指向二维数组。   #include<stdio.h>#include<stdlib.h>void main() { int a[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}}; int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。 p=&a; int i=0; while(i<3) { //printf(“%d “,(*p)[i]); //数组指针,指向的是一个数组整体,相当于指针也带了下标,当执行i++操作时,下标+1,得到该数组的下一个素, //在该例中,指针没有位移,所以依次输出为1 2 3 printf(“%d “,(*p++)[0]); //整型数组类型的指针,指向的是一个数组整体,当执行*p++操作时,指针位移该数组长度的位数 //在该例中,即指针位移4个int的长度,所以输出是1 11 21 i++; } }登录后复制   推荐教程:《C视频教程》   以上就是数组指针的用法有哪些?的详细内容,更多请激活谷其它相关文章!

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/72931.html

(0)
上一篇 2024年 8月 6日
下一篇 2024年 8月 6日

相关推荐

关注微信