指標幾個有意思的面試題

2021-10-09 07:47:07 字數 2482 閱讀 4170

題一:

int main()

; int *ptr=(int*)(&arr+1);

printf("%d %d",*(a+1),*(ptr-1));//執行結果:2 5

return 0;

}

考察知識點:1.陣列名為首元素的位址,給其進行+1操作其實就是指標向後走一步,也就是第二個元素的位址;

2.取位址陣列名(&arr)取到的是整個陣列的位址,雖然其指向的空間與陣列名相同,但其所代表的意義不同。例如:取位址陣列名+1,指標會走到陣列後邊的位置,因此對其進行-1操作,指標會走到陣列最後乙個元素的位置。

題二:

int main()

; int *ptr1=(int*)(&arr+1);

int *ptr2=(int*)((int)arr+1);

printf("%x,%x",ptr1[-1],*ptr2);//執行結果:4,2000000

return 0;

}

考察知識點:1.對指標使用下標來引用,相當於解引用操作。以上題為例相:(ptr1-1)=ptr[-1];

2.將陣列名也就是首元素位址強轉為int,在對其進行+1操作,相當於將指標向後移動了乙個位元組。然後再將其強轉為(int)的指標存放在ptr2這個指標中。而解引用操作會訪問四個位元組。

放到本題來理解就是,用int的四個位元組儲存了1的值,+1操作過後,指標走到了第二個位元組的位置。然後用ptr2來儲存這個位置。

具體請看下圖:

題三

int main()

; int *p;

p=a[0];

printf("%d",p[0]);//執行結果:1

return 0;

}

考察知識點:1,括號內的逗號表示式結果為最後乙個。在本題中(0,1)相當於1;

2.二維陣列的陣列名相當於第一行的位址。而陣列名後只帶乙個下標則代表第一行的某一列的元素。

題四

int main()

; int *ptr1=(int*)(&aa+1);

int *ptr2=(int*)(*(aa+1));

printf("%d,%d",*(ptr1-1),*(ptr2-1));//執行結果:10,5

return 0;

}

考察知識點參考題一題五

int main()

; char** cp=;

char*** cpp=cp;

printf("%s\n",**++cpp);//執行結果:point

printf("%s\n",*--*++cpp+3);//執行結果:er

printf("%s\n",*cpp[-2]+3);//執行結果:st

printf("%s\n",cpp[-1][-1]+1);//執行結果:ew

return 0;

}

考察知識點:1.自加或自減(++,–)操作執行後會改變變數本身的值;

下圖是對本體指標關係的乙個解析:

變數定義完畢後各指標的指向位置

第乙個printf執行時和執行後指標的指向位置

第二個printf執行時和執行後指標的指向位置

題六

int main()

; int* p=a;

printf("%d\n",*p++);//執行結果:1

printf("%d\n",*++p);//執行結果:3

return 0;

}

考察知識點:1.後置的++雖然也可以改變指標的位置,但其返回值不會發生改變。

2.前置的++既改變了指標的位置也改變了其返回值。

因為1,所以在解引用之後列印的仍然是1,但第乙個printf語句執行結束之後,指標p已經指向了2的位置。

因為2,所以指標會先指向3然後在解引用列印。

幾個有意思的面試題

1,abcdx9 dcba 因為9乘a不進製所以a只能是1 9乘d得個位是1所以d只能是9 同樣9乘b也不能進製只有1和0,1已屬a所以b只能是0 9乘9進8要想第二位為0,乘9的個位上必須是2,c就只有8了 所以abcd 1089 2,一艘輪船從甲港順水航行到乙港,立即逆水返回甲港。共用8小時。已...

有意思的面試題

1.10個箱子,每個箱子10個蘋果,其中乙個箱子的蘋果是9兩 個,其他的都是1斤 個。要求利用乙個秤,只秤一次,找出那個裝9兩 個的箱子。1,他們都是很聰明的人 2,他們的原則是先求保命,再去多殺人 3,100顆不必都分完 4,若有重複的情況,則也算最大或最小,一併處死 3.現在北京有一套房子,20...

說幾道有意思的面試題

很長時間沒有寫部落格,突然想起來現在的公司的面試題。選了比較有意思的幾道題,寫一篇部落格談一談。祖傳 的重構 題目描述 現在有乙個函式add 裡面 很複雜實現了一系列的功能。不能不去重構他會波及太大,所以不能改函式裡面的 但新需求是要知道在 呼叫了這個函式,這個函式被呼叫了多少次 count 和被例...