c語言入門到c++使用高手: c語言入門之指針(一)

第九章 指針

第一節 指針基本概念詳解

1. 前提知識

  • 靜態存儲區,動態存儲區,不同變量會保存在不同的存儲區裏
  1. 有些變量的內存是在編譯的時候分配的,有些變量的內存是在程序運行時分配的

  2. 變量都是會佔用一段內存空間的(int,float,double,char佔用一定內存空間,使用sizeof(類型))

#include <iostream>

int main() {

    printf("int size: %d\n", sizeof(int));
    printf("double size: %d\n", sizeof(double));
    printf("float size: %d\n", sizeof(float));
    printf("char size: %d\n", sizeof(char));

    return 0;
}

2. 地址的概念

  • 傳統意義上地址:我們可以用文字例如XX市XX區XX號來找到對應地址

  • 在計算機中:是使用數字來表述地址,計算機習慣用十六進制的形式來表示地址(0x開頭)

  • 總結來說,計算機中地址就是數字,代表內存中的位置

  • 嚴格區分地址和地址中內容的區別,程序內部會維持一張表(變量名,變量地址的值,變量類型等)

3. 直接訪問和間接訪問

  • 直接訪問:按變量地址存取變量值

  • 間接訪問:將變量的地址存在另一個內存單元中,
    在C語言中,我們一般定義int,char,float,double這些變量,我們一般用這些類型的變量來存值
    在C語言中,我們也可以定義一種特殊的變量,這種特殊的變量用來保存地址的

  • 假設我們定義了一個變量來存放變量的地址,雖然這種特殊變量是保存地址的,但也
    區分保存什麼類型的地址

// 把變量i的地址保存到了mypoint
// 理解成mypoint指向了i,這裏所謂的指向,就是通過地址體現的
// 雖然mypoint是用來存放整型地址的,但是mypoint這種特殊變量也是需要佔內存的
// 這種特殊變量mypoint一般佔四個字節
mypoint =&i;

// 如果我們現在要存取i的值,使用一種間接訪問手段
// a) 首先我們先找到存放i的地址的這個內存位置,也就是mypoint的保存的地址
*mypoint
  • 指針變量:如果一個變量專門用來存放另外一個變量的地址,則稱這個變量爲指針變量

  • 指針變量的值:就是指針變量存放的值,是個地址,也叫指針

  • 區別指針變量(存放地址的變量),地址(指針)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章