嵌入式C開發基礎題(12)

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)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章