C语言 数组指针初始化「建议收藏」

C语言 数组指针初始化「建议收藏」charm[3][4];m[3][4]={“asd”,“fgh”,“jkl”};当然不行,不管从初始化器,还是从原理上来讲都不正确,首先a[3][4]表示的是数组中第4行第5个元素,请问,可以对数组中具体的一个元素赋这么长一串值吗?所以不能这样赋值。第一种写法是属于初始化,初始化会自动为数组中的每一个元素赋正确的值。数组指针初始化方法:int(*p)[4];;chara[3][4];p=a;p=&a[0];p=a+1;p=&a[1];//都正确p=a[0];//

大家好,欢迎来到IT知识分享网。

char m[3][4];
m[3][4]={“asd”,“fgh”,“jkl”};
当然不行,不管从初始化器,还是从原理上来讲都不正确,首先a[3][4]表示的是数组中第4行第5个元素,请问,可以对数组中具体的一个元素赋这么长一串值吗?所以不能这样赋值。第一种写法是属于初始化,初始化会自动为数组中的每一个元素赋正确的值。
数组指针初始化方法:
int (*p)[4];;
char a[3][4];
p=a;
p=&a[0];
p=a+1;
p=&a[1]; //都正确
p=a[0]; //错误
p=a[1]; //错误。
首先,指针p表示的是,指向一个含有4个元素的一维数组的指针,因此,必须把一个含有4个元数的数组的地址赋给指针p才会正确。因为二维数组名a,其实就是&a[0],表示二维数组第一行的行指针,这一行包含有4个元素,因此他就是一个含有4个元素的一维数组的指针,是正确的赋值。同理a+1是与&a[1]等价的,也就是表示的是二维数组第1行的的行指针,同理a[0]是错误的,因为a[0]是指的第一行第一个元素的地址,也就是&a[0][0],他只含有一个元素,不是一个数组的地址,所以错误

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/13657.html

(0)
上一篇 2023-03-22 10:00
下一篇 2023-04-12 14:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信