我正在尝试运行以下代码并获取" 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编译器。
答案 0 :(得分:1)
p+=sizeof(int)
会使p
指向距离0 th 元素更远的sizeof(int)
元素,以便p+=sizeof(int)
将给出4的地址传递数组的 th 元素(假设您的机器上有int
4个字节的大小)。 [-1]
会将{1}}减去指向3 {sup> rd 元素t
。