永发信息网

若有定义语句:char s[3][10],(*k)[3],*p; p=s[0]为什么是对的? s是二维数组,怎么写成了一维数组!!!

答案:3  悬赏:10  手机版
解决时间 2021-03-30 01:52
若有定义语句:char s[3][10],(*k)[3],*p; p=s[0]为什么是对的? s是二维数组,怎么写成了一维数组!!!
最佳答案
s是二维数组,s[0]既能表示“一维数组”,也能表示一维数组的首地址。
在这里,即是把一维数组的首地址,赋值给指针变量p。
全部回答
直接定义的二维数组,实际上是一个m*n的连续空间,就是一维的,是逻辑上的二维。而且p=s[0]实际是s的三个维的一个,就是第一行的地址。p=s[1]是第二行的地址,这样,p[3]就相当于s[0][3]了。

二维数组写成一维是地址,写成二维是元素。s[0] 相当于 &s[0][0].
C语言没有多维数组,只有多个一维数组的嵌套。
举个例子给你讲吧
a[3][3]= {1,2,3
4,5,6
7,8,9 }
其实是3个一维数组a[0] = {1,2,3};a[1]= {4,5,6};a[2]={7,8,9}组成的;
a表示数组名,也代表数组首地址。此首地址并非a[0][0]元素的地址,而是a[0]这个数组的地址(虽然具体数值一样,但意义不同);所以对于2为数组a[3][3]; a+1 表示的是一维数组a[1]的地址,
*(a+1)表示的是数组a[1]中第一个元素的地址,所以*(*(a+1)+2)表示数组a[1]中第3个元素的值也就相当于a[1][2],其值为6;
(*p)[3] = a; 表示p是一个指向一维数组的指针。 这时p指向第一个一维数组也就是 1,2,3这一行。 p+1表示指针指向了第二个一维数组也就是4,5,6;
用法上指针p和数组名a基本一样;
以后遇到a[m][n]不要再想象成二维数组,就想成m个1维数组编号从a[0]到a[m-1]每个数组里存了n个元素
不明白再问
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么确定4跟灯管中的一根坏了或老化啊???
怎样才能用微信免费大额提现
linux zip -d 不能用 ,报错name not matched
求我的老板是个p小说全版
戴尔g7什么配置比较好
12D10图集谁有
请问单反相机与微单相机的区别及优缺点?
国内能玩pubg国际服吗
前苏联有多少位总统,都叫什么名字?
考完试了驾驶证啥时间出来
苹果手机已购清单怎么删除
求炫舞足球宝贝自定义图 参考一下
我朋友圈2千多好友,怎么打广告才不让人反感
2011款别克陆尊前风挡雨刷尺寸
从10里面每次减去二分之一,减去几次的0?
推荐资讯
四十五岁离婚的利弊
为什么中国的ui设计师很多但是好的app很少
LM393N怎么用
k1316次列车西安至呼和浩特东沿途都经过那些
鄂破机是什么?
同科·汇丰国际周边环境怎么样?生活便利吗?
l am( )you are.so we should share the hous
婆婆什么都好,就是对我和妯娌家的孩子偏心
今天听到女生a和女生b要出去吃饭,因为平常关
四轮电动车8v150AH共9块玌配12v200AH6块都是7
为什么化学实验要用澄清石灰水而不用自来
溴化银见光分解呈黑色,不是因为银被氧化么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?