第12题:考查指针数组的指针
#include <stdio.h>
void f(char**);
void main()
{
char* argv[] = { "ab" ,"cd" , "ef" ,"gh","ij" ,"kl" };
f(argv );
}
void f( char **p )
{
char* t;
t=(p+= sizeof(int))[-1];
printf("%s\n" , t);
}
这段程序的输出是:
(a)ab(b) cd (c) ef (d) gh
解答:
sizeof(int)的值是2(记得我们的约定:int 两个字节 2 byte (16位系统,认为整型是2个字节))
所以p+=sizeof(int)指向argv[2],这点估计大家都没有什么疑问
(p+=sizeof(int))[-1]指向argv[1],能理解吗?
因为(p+=sizeof(int))[-1] 就相当于(p+=2)[-1],也就是(p+2-1)