使用c中的指针解释二维数组

时间:2017-02-12 19:34:14

标签: c pointers

我正在尝试运行以下代码并获取" gh"作为输出。请帮帮我,我们如何得到这个结果。

void f(char **p) {
    char *t;
    t = (p += sizeof(int))[-1];
    printf("%s\n", t);
}

int main() { 
    char *arg[] = { "ab", "cd", "ef", "gh", "ij", "kl" };
    f(arg);
}

P.S。我正在使用gcc编译器。

1 个答案:

答案 0 :(得分:1)

p+=sizeof(int)会使p指向距离0 th 元素更远的sizeof(int)元素,以便p+=sizeof(int)将给出4的地址传递数组的 th 元素(假设您的机器上有int 4个字节的大小)。 [-1]会将{1}}减去指向3 {sup> rd 元素t