下面的代码在做什么?
int g[] = {9,8};
int (*j) = g;
根据我的理解,它创建了一个指向 2 个整数数组的指针。
但为什么这会起作用:
int x = j[0];
这不起作用:
int x = (*j)[0];
在您的示例中,括号是多余的。指针并不关心是否涉及数组 - 它只知道它指向一个int
int g[] = {9,8};
int (*j) = g;
也可以重写为
int g[] = {9,8};
int *j = g;
也可以重写为
int g[] = {9,8};
int *j = &g[0];
指向数组的指针看起来像
int g[] = {9,8};
int (*j)[2] = &g;
//Dereference 'j' and access array element zero
int n = (*j)[0];
这里的链接有关于指针声明(以及如何理解它们)的好读物:http://www.codeproject.com/Articles/7042/How-to-interpret-complex-C-C-declarations
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)