- 论坛徽章:
- 0
|
代码:
- #include <stdio.h>
- main()
- {
- int a[4]={2,4,6,8};
- int (*pt)[4]=&a;
- int *(*ptr)[4]=&pt;
- printf("%d\n",(*pt)[0]);
- printf("%d\n",(*ptr)[1]);
- }
复制代码
编译、运行:
- [wjh@MagicLinux c]$ gcc -g -o pp pp.c
- pp.c: In function `main':
- pp.c:6: warning: initialization from incompatible pointer type
- [wjh@MagicLinux c]$ ./pp
- 2
- 2
复制代码
如果将代码最后一句改为:
- printf("%d\n",(*ptr)[0]);
复制代码
编译、运行:
- [wjh@MagicLinux c]$ gcc -g -o pp pp.c
- pp.c: In function `main':
- pp.c:6: warning: initialization from incompatible pointer type
- [wjh@MagicLinux c]$ ./pp
- 2
- -1075754848
复制代码
被搞糊涂了,请教两个问题:
1、int *(*ptr)[4]是什么意思?怎么理解、使用?
2、printf("%d\n",(*ptr)[0]);为什么没有数值,而要从printf("%d\n",(*ptr)[1]);开始呢? |
|