C语言中:若有定义语句:int a[4][10],*p,*q[4];且0≤i<4。
关于:语句:inta[4][10],*p,*q[4];且0≤i<4。小弟有几个问题想请教大侠!(1)*q[4]是几维数组?(2)p[i]=a[i]与p=a[i];这两个分...
关于:语句:int a[4][10],*p,*q[4];且0≤i<4。小弟有几个问题想请教大侠!
(1)*q[4]是几维数组?
(2)p[i]=a[i]与p=a[i];这两个分别怎么理解?
小弟在此谢过了!!! 展开
(1)*q[4]是几维数组?
(2)p[i]=a[i]与p=a[i];这两个分别怎么理解?
小弟在此谢过了!!! 展开
展开全部
(1)与2维数组相似,但绝不是2维数组。它是一个指针数组,它的每一个元素均为一个地址
(2)如题,p是一个一级指针可等价于一维数组,你的第一个式子估计不会成立,原因:p[i]应该存放一个数据,而a[i]是二维数组a的第i列的首地址,类型不匹配(你的p也没有赋初值,是个野指针,即指向不确定空间,有的编译器可能能通过,不过运行会有问题),第二个式子的意思是把a的第i列的首地址赋值给p(此时p就相当于一个一维数组,它能访问a的第i列的元素);
(2)如题,p是一个一级指针可等价于一维数组,你的第一个式子估计不会成立,原因:p[i]应该存放一个数据,而a[i]是二维数组a的第i列的首地址,类型不匹配(你的p也没有赋初值,是个野指针,即指向不确定空间,有的编译器可能能通过,不过运行会有问题),第二个式子的意思是把a的第i列的首地址赋值给p(此时p就相当于一个一维数组,它能访问a的第i列的元素);
追问
在式子p[i]=a[i]中,为什么不能理解把a的第i列的首地址赋值给p的第i值(p等价与一维数组)???
追答
p的第i个元素是一个数据,是一个确切的值,不能存放地址。地址一般用指针存放,比如你如果用q[i]就能存放地址
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询