返回信息流#include <stdio.h>
int main(int argc,char* argv[])
{
int **p;
int arr[10];
int i;
for(i=0;i <10;i++){
arr[i] = (int)arr + 4*sizeof(int);
}
p = (int**)&arr;
p[8][2] = 0x12;
for(i=0;i <10;i++){
printf("%x,",arr[i]);
}
return 0;
}
究竟哪个被赋值0x12了?
~
这是一条镜像帖。来源:北邮人论坛 / cpp / #16315同步于 2008/11/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
大家看看阿 小小指针
force
2008/11/19镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
好多指针阿
【 在 force (lazy笨) 的大作中提到: 】
: #include <stdio.h>
: int main(int argc,char* argv[])
: {
: ...................
p[8][2]==*(*(p+8)+2)
*(p+8) 等于 arr[8]的值吗? 这里不太确定,p = (int**)&arr; 也是这里理解有些问题
如果等于的话,那么 arr[8]的地址是arr[4]的地址
所以p[8][2]==*(arr+4+2)=arr[6]
那么arr[6]就是0x12了~~
(int**)&arr
&和*抵消,实际就是 int* arr~~
p = (int**)&arr;
就是 p = (int *) arr;
所以p和arr就是一个东西~
I think it is a[6].
First, all a[0].a[1],a[2],...,a[3] are assigned the address of a[4].
And p points to the address of a[0].
Obviously, p[8] dereferences to the address of a[4]
and treat the address of a[4] as a starting address of a one-dimensioned array.
then p[8][2] points to 2 integers after where a[4] is. That is a[6];