C語言指標的例項體驗

2021-08-07 09:47:36 字數 1200 閱讀 9410

引言

到了春季的三四月份,東區的各大實驗室都開始陸續納新。大多數的納新試題都考到了c語言有關的知識,看到3g實驗室的一道題,這讓我想起當我面試實驗室的時候的一道題,非常有趣,今天我來和大家分享一下這道題

#include int main (); int*ptr1=(int*)(&a+1); int*ptr2=(int*)((int)a+1); printf("%x,%x",ptr1[-1],*ptr2); return 0;}

這道題涉及到了指標,陣列,強制型別轉換以及運算子的優先順序和大端序小端序,主要是體會指標指向的特點。

在我電腦上輸出的值是 4,0200 0000(2000000)

然後讓我給大家詳細的分析一下這道題;

a是乙個具有4個整型變數的陣列的名字, &a是陣列的首位址。&a+1表示讓指標指向下乙個資料,於是a的指向了4的下乙個位址,用此來初始化ptr1,所以part1的指向如下:

在ptr1初始化的時候,令&a+1強制轉換成整型指標,所以 ptr1[-1]相當於把ptr1往前挪乙個整型大小,即4個位元組,然後呢,

所以呢,列印出的第乙個數字是a[3]的內容,即4!

第二部分

ptr2先將a組數轉化成整形變數,然後加1然後再轉化成整形指標,所以此時 ptr2的指向在

然後因為整形為四個位元組,所以此時指向的是a的後三個位元組和a[1]的第乙個位元組,具體如下圖(在x86系統下的資料儲存),

因為x86系統是小端序,讀取資料或儲存資料的時候是最低位對應低位址,所以列印

0200 0000。

C語言指標例項詳解

include a是指標變數 a就代表儲存位址 void test1 int a printf 指標與位址 n int var 20 實際變數的宣告 int ip 指標變數的宣告 int var 20 int ip var 等價於 ip ip 等價於 var ip 就相當於儲存位址 int var1...

關於C語言指標陣列的幾個例項

1.用指向指標的指標的方法對5個字串排序並輸出 include include int sort char p return 1 void main sort p for i 0 i 5 i printf s p i printf n 2.用指向指標的指標的方法對n個整數排序並輸出。要求將排序的方法...

C語言指標入門的簡單例項教程

c語言的指標的存在使得c語言對硬體的操控,以及靈活性得到了極大的提高。但是指標的使用存在著很多難點問題。include include 這裡的函式是指標做引數的例子,要知道這個特性可以彌補c語言只能有乙個返回值的特性。void swap1 int pa,int pb main 函式必須要返回乙個數字...