第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)