#include <stdio.h>
void fun(char**);
int main()
{
char *argv[] = {"ab", "cd", "ef", "gh"};
fun(argv);
return 0;
}
void fun(char **p)
{
char *t;
t = (p+= sizeof(int))[-1];
printf("%s\n", t);
}
有人可以解释我指派t =(p + = sizeof(int))[ - 1]; ..给出的ANS是CD ..有人可以解释这个任务,双指针和输出
如果这是从某种类型的教育课程的实际分配和答案表述为'cd',我真诚的建议是跑了一英里。 – NPE 2015-02-07 21:24:51
p增加int大小,然后通过选择右边的索引来解除引用。这在技术上是未定义的行为,因为程序不能真正做负数组索引。 – 2015-02-07 21:25:33
当然你可以使用负指数。只要在负指数结果中添加一个有效的指针即可。 – gnasher729 2015-02-07 21:26:26