发布网友 发布时间:2023-07-14 12:55
共2个回答
热心网友 时间:2024-12-15 05:56
纠正下回答。
int (*p)[8]:p指向一维数组的指针,该数组中存放的是整型元素,而不是指针数组。
int *p [8]:p是一个数组,该数组中的每一个元素都是一个指向整型的指针。
楼主的问题的答案20(16进制)是正确的,并不是随机的。解释如下。
P指针指向一个包含8个int类型元素的空间,每个int占4个字节,因此可以说p指向一个
包含32个直接的空间,因此P+1(1指的是1个P指向的空间)的操作会被解释为p+4*8。
而此题中你是P[0]这么使用的该指针,虽然和定义的指针类型不符合,但是这种表达方式
依然会被解释为p+1,所以任意p[i]和p[i+1]的差都是32,也就是16进制的20。所以这不是
偶然。但是作者此处的指针使用确实是有问题的。若是你想输出的是a的前两个元素,应该
这样书写,cout<<(*p)[0]<<endl<<(*p)[1]<<endl;。
热心网友 时间:2024-12-15 05:57
你定义了一个指针数组(*p)[8];可是你没有给指针复制,没有指向对象;所以都随即赋值了,但是他们是一个数组中的,所以随即的值是连续的,他们之间相差的是int型数据占的内存的比特位数。看我的程序你就明白了。