我认为在程序结束时,il将打印3但实际上它是0.
任何人都可以解释它是如何发生的吗?
这是代码:
int arr[3] = {2, 3, 4};
char *p;
p = arr;
p = (char*)((int*)(p)); // two conversion, means nothing, omit
printf("%d, ", *p); // point to 2,
p = (int*)(p+1); // point to 3 ?
printf("%d", *p);
return 0;
Run Code Online (Sandbox Code Playgroud)
您正在处理一组整数,如一系列字符.标记为"无意义"的行实际上意味着很多.
当你递增char* p1时,你将指针移动一个字节,但为了指向arr[1]你需要增加它的sizeof(int)字节.声明p为int* p,然后p+1将做你需要的.
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |