数组歧义的基址

use*_*138 1 c c++ arrays pointers

以下代码中的cc是否包含数组c的基址,或者它是否包含"Hello"中字母"H"的地址?如果答案是基地址,那么为什么cc在执行cc ++之后不会增加8个字节,因为它应该保持两个指针?

void foo(char *cc[])
{
    printf("%x\n",cc);
    cc++;
    printf("%x\n",cc);
}

int main()
{
    char *c[] = {"Hello","World"};
    foo(c);
}
Run Code Online (Sandbox Code Playgroud)

Ed *_*eal 5

c是一个指针数组.第一个指针(c[0])指向由Hello字符后跟空字符组成的字符数组.c[1]指向另一个包含World后跟空字符的字符数组.

所以cc将指出c[0]如上所述.增量cc将与上述相同c[1].

最好在纸上绘制这些东西,以便更好地了解正在发生的事情.