【C語言】指針總結

  • 指針是什麼?
    內存區的每一個字節有一個編號,這就是“地址”,它相當於房間號。由於通過地址能找到所需的變量單元,我們可以說,地址指向該變量單元。指針就是地址。
int main()
{
    int a = 10;
    int b = 20;
        
    int *p;            //定義整型指針( 地址) 變量
    p = &a;            //”&” 取地址符,&a 是取a 的地址 
    int *p1 = &a;      //p1指向a
    *p = 100;          //*p: 對p 解引用, 即爲a=100
        
    p = &b;            //p指向b
    *p = 200;          //b = 200

    int **pp = &p;     // 二級指針變量pp 賦值爲p 的地址
        
    *pp = &a;          //p指向a
    **pp = 1000;       //a = 1000
        
    *pp = &b;          //p指向b
    **pp = 2000;       //b = 2000
    }

在這裏插入圖片描述

在這裏插入圖片描述

數組名arr表示整個數組 ——int arr[] = {1, 2, 3, 4, 5, 6 ,7, 8 ,9 ,10};
1.在定義數組的同一個函數中,sizeof(arr) //40
2.在定義數組的同一個函數中,&arr+1
在這裏插入圖片描述

int main()
{
	int arr[] = {1,2,3,4,5};
	int *p1 = (int *)(&arr+1);       //加一個數組
	printf("%d\n",p1[-2]);           //4,*(p1-2)
	
	int *p2 = (int *)((int)arr+1);   //加一個字節
	printf("%x\n",*p2);

	return 0;
}

在這裏插入圖片描述
從圖中可以看出,p1的地址爲0xdcfaac ,&arr的地址爲0xdcafa98;倆者相差剛好是數組arr的大小,由此得知&arr+1是加了整個數組;p2和&arr的地址相差1,由此得知arr+1加了一個字節。

發佈了52 篇原創文章 · 獲贊 103 · 訪問量 4102
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章