1. 程式人生 > >嵌入式面試題C語言(一)陣列一道面試題

嵌入式面試題C語言(一)陣列一道面試題

這道題在工作中實際程式設計很少能遇到,至少我沒有涉及到,但是低於陣列指標其實是一種深入理解或者說另一種思考的角度,這是一道面試題:

int a[] = {1,2,3,4,5,6,7};
1.printf(“a[5] is %d\n”, a[5]);
2.printf(“5[a] is %d\n”, 5[a]);
這就是考題 這裡直接給出結果 6 ,6

在我試驗輸出這個結果的時候其實我還是不理解,按照我的想法1輸出6正常,但是2不應該啊,我當時想a是資料地址那麼5[a],實際應該是一個不確定的記憶體資料才對,然後我再網上找到類似這道題解釋如下:

陣列a[5],可以解析為*(a+5),也就是基址 + 偏移量(這樣理解的話a[5]和5[a]實際是一樣)

 a[5]  ==>  *(a+5)
              ||
 5[a]  ==>  *(5+a) 

我當時是從陣列角度來理解這個問題,實際要是結合指標地址角度結合理解才是本質