- 论坛徽章:
- 0
|
学了这么多年C 自认为对指针有一定了解。回过头来看教材,又发现蒙了。
这是关于二维数组指针的,希望谁明白能给讲清楚。
看测试程序:
- #include <stdio.h>
- int main(void)
- {
- int a[2][2]={1,2,3,4};
- printf("a=%u\n", (unsigned int)a);
- printf("*a=%u\n", (unsigned int)(*a));
- printf("**a=%u\n", (unsigned int)(**a));
- printf("a+1=%u\n", (unsigned int)(a+1));
- printf("*(a+1)=%u\n", (unsigned int)(*(a+1)));
- }
复制代码 执行结果:
a=3216495792
*a=3216495792
**a=1
a+1=3216495800
*(a+1)=3216495800
看这里。 a是一个地址吧, *a是这个地址指向的位置。 我们发现 a值等于*a值。就是说一个地址里的值还为这个地址。 如果这样的话 *a **a ***a (n个*)a 都还该为这个值。
可是第三行输出明显否定了这个推论。 到底是怎么回事呢?? |
|