大家好,关于二维数组指针函数很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于在声明函数的二维数组形参时的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
C语言中,怎么用指针访问数组元素,要注意哪些问题
指针是C语言中很重要的一部分内容,可以说是C语言的精髓,但是指针在初学的时候确实比较难理解,尤其是与数组混在一起之后,很容易搞混淆。下面讲解一下指针如何访问数组,及注意事项。
首先看几张图。
上图中,定义了一个int型数组,有4个元素,定义了指针变量p。p=&a[0]的意思是将首元素的地址赋值给指针变量。
p=a的意思是将首元素的地址赋值给指针变量。
*p=a的意思是将首元素的地址赋值给指针变量,在声明的时候完成了赋值。
由以上可以看出,p=&a[0],p=a,*p=a三者的含义是一致的。
数组名a代表的就是数组地址,所以p=&a[0],p=a,二者是等价的。
声明时赋初值:
int*p=&a[0]和int*p=a是一致的。
通过指针引用数组元素时:a[1]=*(p+1)。
必须要注意的是:
a:数组首元素的地址(每个元素都是int类型)。
a+2:数组的第3个元素的地址。
*(a+2):数组的第3个元素的地址。
采用指针访问数组时速度要快于直接访问数组的下标,所以指针的效率要比数组高很多。
以上就是这个问题的回答,感谢留言、评论、转发。
更多精彩内容请关注本头条号:玩转嵌入式。感谢大家。
如何在c语言二维数组中使用指针
对于a[i][j](二维数组的大小为n×m)而言,首先要搞清楚行指针和列指针行指针:&a[i]或者a+i指向行,&a[i]=&*(a+i)=a+i列指针:a[i]或*(a+i)指向列,a[i]等价于*(a+i)元素的引用方式有如下三种方式1.通过地址引用二维元素*(&a[i][j]),*(a[i]+j),*(*(a+i)+j),*(a[0]+m*i+j)*(&a[0][0]+m*i+j)(*(a+i))[j]2.建立一个指针数组引用二维元素int*p[3],a[3][2],i,j;for(i=0;imain(){intscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};inti,j;printf("输入学生号:0-2");scanf("%d",&i);printf("thescoreofNo.%dare:\n",i);for(j=0;jmain(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int*p;for(p=a[0];p
main(){intscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};inti,j;printf("输入学生号:0-2");scanf("%d",&i);printf("thescoreofNo.%dare:\n",i);for(j=0;jmain(){intscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};inti,j,*p;printf("输入学生号:");scanf("%d",&i);printf("thescoreofNo.%dare:\n",i);for(p=score[i];p
二级指针和二维数组行指针的区别
二维数组即a[i][j],如a[1][1]是第一行第一列的那个数;指针只是指向了这个数所在的地址,没有具体指出那个数.他们的区别一个是指向具体的数,一个是执行了该数所在的地址
指向整型数组的指针如何用
数组指针(也称行指针)
定义int(*p)[10];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是10,也可以说是p的步长。也就是说执行p+1时,p要跨过10个整型数据的长度。
例:int(*p)[4];//该语句是定义一个数组指针,指向含4个元素的一维数组。所以数组指针也称指向一维数组的指针,亦称行指针。
指针数组
定义int*p[n];[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样*p=a;这里*p表示指针数组第一个元素的值,a的首地址的值。如要将二维数组赋给一指针数组:int*p[3];inta[3][4];p++;//该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针for(i=0;i<3;i++)p[i]=a[i]这里int*p[3]表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]所以要分别赋值。这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
C语言30天核心突破
一维数组指针可以指二维吗
可以定义一个二级的指针如main(){char**p;charb[10][10]={....};p=b;}
如果你还想了解更多这方面的信息,记得收藏关注本站。