如何取消引用指针数组?参考以下代码:
#include <stdio.h>
int main()
{
char *fruit[] = {
"watermelon",
"banana",
"pear",
"apple",
"coconut",
"grape",
"blueberry"
};
int x;
for (x = 0; x < 7; x++)
{
putchar(**(fruit + x));
putchar('
');
}
system("pause");
return(0);
}
执行上面代码,得到以下结果:
w
b
p
a
c
g
b
要理解**(fruit + x)
语句构造,从内到外如何工作?
fruit+x
变量fruit
包含内存地址,它是一个指针!x
是一个增加一个单位的值。
在这种情况下,单位是一个地址,因为fruit
数组的所有元素都是指针。
*(fruit+x)
这是地址fruit + x
的内容。从代码中,fruit
是一个指针数组。 所以前面的操作的结果是一个指针!**
运算符几乎总是与指针数组或者是一串字符串相关联。