1. 程式人生 > >10、C語言之指針

10、C語言之指針

定義 移動 指針 存儲位置 nbsp 指向 clas 逆運算 OS

指針

一、地址和指針的概念  

  在程序中定義一個變量,在編譯時就會給這個變量分配一個內存單元,同時根據變量的類型決定這個內存單元的大小。

  內存中每一個字節都有一個編號,就是地址

  對每一個變量,它在內存中都有一個存儲位置,這個位置就是該變量的地址,對變量值的存取是通過地址進行的。

  在C語言中,這個地址被形象化地稱為“指針

  指針:一個變量的地址

  指針變量:存放另一變量地址的變量(即指針)

二、變量的指針和指向變量的指針變量

  1、定義一個指針變量

    指針變量在使用前必須定義,使其指向特定類型的變量,指針變量存放地址,必須定義為“指針類型”

  定義的一般形式:基類型 *指針變量名

    基類型:用來指定指針變量可以指向的變量的類型。

        將決定指針移動和運算時的移動量

    構成:[存儲類型] 數據類型

    *:表示該變量為指針類型

  註意:

    (1)int *p1,*p2;與int *p1,p2;的區別

    (2)指針變量名為p1,p2,不是*p1,*p2;

    (3)指針變量只能指向定義時所規定類型的變量

    (4)指針變量定義後,變量值不確定,應用前必須先賦值

  2、進一步理解&與*運算

    &:取地址符  

      含義:取變量的地址

      單目運算符

      優先級:2

      結合性:自右向左

    *:指針運算符(“間接訪問運算符”)

      含義:去指針所指向變量的內容

      單目運算符

      優先級:2

      結合性:自右向左

    兩者的關系:互為逆運算

  3、指針變量的初始化

    一般形式:[存儲類型] 數據類型 *指針名 = 初始化地址值

    eg:int i;

      int *p = &i;

三、數組與指針

  數組的指針:指數組的起始地址

  數組元素的指針:指數組元素的地址

    數組的地址-->指針變量,指針變量就指向該數組

  引用數組元素

    下標法:a[2]

    指針法:用指針變量指向所找的數組元素。占內存上,運行速度快

  

    

10、C語言之指針