- 论坛徽章:
- 0
|
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc, char *argv[])
- {
- int a = 1, b = 2, c = 3, d = 4;
- int array[4];
- int *pi = array;
- *pi = a;
- *(pi + 1) = (int)&b;
- *(pi + 2) = (int)&c;
- *(pi + 3) = (int)&d;
- //如上设置的意思其实就是
- //array[0] = a array[1]指向b array[2]指向c array[3]指向d
-
- int **p = π
- printf("array:%p\n", array);
- printf("p[0] = %p\n", p[0]); //这里是array的地址,明白
- printf("p[0] = %d\n", p[0][0]); //这里是显示1,也就是a的值,也理解
- printf("p[1] = %d\n", p[1]); //这里也显示1,为什么????
- // printf("p[1][0] = %d\n", p[1][0]); //如果加入这行可以编译通过,但是程序将在此处
- //提前终止,不管是以什么格式打印p[1][0]
-
- int i;
- for (i = 2; i <= 4; i++) {
- printf("array[%d]:%d ----%p\n", i, p[i][0], p[i]);
- }
- printf("b add:%p\n", &b);
- printf("c add:%p\n", &c);
- printf("d add:%p\n", &d);
- return 0;
- }
复制代码
按照我的理解,p作为二级指针指向array,那么p[1][0] p[2][0] p[3][0]应该分别是b c d的值才对啊?
为什么程序显示p[2][0] p[3][0] p[4][0]才是b c d的值呢?
请各位明白人解释一下???非常感谢!!!
[ 本帖最后由 weckay 于 2007-6-17 11:37 编辑 ] |
|