易百教程

取消引用指针数组

如何取消引用指针数组?参考以下代码:

#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是一个指针数组。 所以前面的操作的结果是一个指针!
**运算符几乎总是与指针数组或者是一串字符串相关联。