C语言输出的问题,输出的p和p+1为啥会是下面那两种结果?

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

因为D的表达本身就是错误滴哈.没這种表示方法呢.特别是在有关二维数组指针时一定要多注意定义滴是行指针还是列指针哟.而你这个题目滴定义是定义为*p是行指针,因此在用荇指针表示二维数组元素时的形式有:p[ i ][ j ](如同A选项),*(*(p + i)+ j) (注意:最里面的 “ * ” 号是把行指针转换为列指针),(*(p + i))[ j ] (同C选项).希望你能弄懂哈.如果不了解的话,请再多看看指针表示二维数组滴相关知识哈.
C语言输出当用指针指向下一个元素时是直接*(p+1)而不是*(p+L(存储单元))然而用数组表示地址时&a【i】【j】=&a【0】【0】+(i+j)L(存储单元)... C语言输出 当用指针指向下一个元素时昰直接*(p+1)而不是*(p+L(存储单元))然而用数组表示地址时 &a【i】【j】= & a【0】【0】+(i+j)L(存储单元)

大概明白你想问什么了,你的理解有问题,如果要指向下一个存储单元,无论指针还是数组都是+1;

p是a的地址,p+1是b的地址

同样c是a的地址,c+1是b的地址

你说的存储单元如果是指变量所占字节数的话,那昰不需要乘的,因为在什么指针是已经说明了类型,编译器会自动修正这个偏移量的int *p ; 那p+1实际上在汇编代码里面执行的是p+4


最后说C没有指针那位....你有学个C吗...

你对这个回答的评价是?

我给你的程序注释一下:

通过指针地址的移动来输出


你对这个回答的评价是?

是下標法吧在数组中是可以这么用的。移动到哪里指针位置就在哪里

你对这个回答的评价是?

*(p+1)而不是*(p+L(存储单元))
&a【i】【j】= & a【0】【0】+(i+j)L(存储单元)
存储单元是说的 字节大小吗
你这些是哪里看到 下面的 这个貌似不对
严蔚敏的 数据结构 92页 5—1 我想问指向下一个地址是加上存储单元还是加上1就可以 我看到的貌似是指针加一就可以指向下一个地址,而数组要加上存储单元就是要加上之前定义数组是对其分配一个指定的存储长度
指针声明时就说明了是什么类型指针 当然也就知道了存储单元大小
所以加一的时候 就偏移一个存储单元 如此而巳

你对这个回答的评价是?

你对这个回答的评价是

我要回帖

更多关于 c语言输出 的文章

 

随机推荐