關於C陣列指標的一道面試題

2021-07-06 02:10:12 字數 661 閱讀 5184

本文由@lonelyrains

c語言指標是經典問題了,還是做錯啊~

int main()

; int *p = (int*)(&a+1); // a陣列的位址加1,是以a陣列的大小為乙個單位

char *pc1 = (char *)(&a+1); // 同上,只是pc1變成了字元指標,下次pc1加減運算是乙個位元組大小為乙個單位

char *pc2 = (char *)(reinterpret_cast(&a)+1); // a的加減運算是乙個位元組大小為乙個單位,得到的pc2也是乙個位元組大小單位

char *pc3 = (char *)((char*)(&a)+1); //同上

//printf("%08x,%08x,%08x,%08x,%08x\r\n",a,p,pc1,pc2,pc3);

printf("%d,%d,%d,%d,%d",*(a+1),*(p-1),*(pc1-1),*(pc2-1),*(pc3-1));

return 0;

}

針對上述**,小端機的輸出為2,4,0,1,1。               其中大小端只對第pc1的運算結果有影響

關於陣列指標的一道面試題

看下面一道面試題 include include int main void int ptr int a 1 printf d,d a 1 ptr 1 return 0 輸出結果為 2,5 在這裡主要是考察 a 1 和 a 1的區別了。很顯然 a 1 取的是a 1 然而 a 1取的是什麼呢?a不是首...

一道c 面試題

float a 1.0f cout int a endl cout int a endl int a 是什麼意思?cout boolalpha int a int a endl float b 0.0f cout int b endl cout int b endl cout boolalpha i...

關於瀑布流陣列的一道面試題

今天看到一道題目,當時不會,聽了講解之後,覺得很有意思,先記錄下來。原題如下 20 個隨機數字,放到 3 個陣列中 arr1,arr2,arr3 保證 3 個陣列 的和相差最小 先來解釋一下這個題目 就是把20個隨機數放在3個陣列中,然後把每個陣列中的值相加,最後再把每個陣列中的和相減,得到差值是最...