小螞蟻學習C語言(15)——C語言指針——指針基礎認識

指針
數據結構

指針的重要性:函數

    表示一些複雜的數據結構(《數據結構》)spa

    快速的傳遞數據(耗時短,消耗內存也小).net

    使函數返回一個以上的值指針

    能直接訪問硬件code

    可以方便處理字符串對象

    是理解面嚮對象語言中引用的基礎blog

總結:指針是C語言的靈魂內存


指針的定義:ci

    地址:內存單元編號  

    從零開始的非負數

    範圍:4G

    cpu要對內存條進行控制的話,是經過三根線處理的,1控制線,2數據線,3地址線

    對內存條讀仍是寫,是由控制線來控制的。

    數據線進行數據的傳輸

    地址線是爲了肯定是要對內存中的那些單元進行操做

問題來了,cpu是經過幾根地址總線,對內存進行管理

    一根地址線,只有兩種狀態,0和1,能夠表示兩個單元的地址。

    一根線能控制兩個內存單元,0是一個單元,1是一個單元。

    兩根線能控制四個內存單元。00一個單元,01一個單元,10一個單元,11一個單元。

    三根        2的3次方

    。。。。。。

    32位的機器,擁有32根地址總線,也就是說可以控制2的32次方個單元。2的30次方,是1g,再乘以4,就是4g,因此32位機器的地址空間是4g。

   

    指針:

        指針就是地址,地址就是指針。指針變量就是存放內存單元編號的變量,或者說指針變量就是存放地址的變量。

        指針和指針變量是兩個不一樣的概念。

        可是要注意:一般敘述時會把指針變量簡稱爲指針,實際他們不是一回事。

        指針的本質就是一個操做受限的非負整數。指針是不能相加相乘相除的,由於沒有什麼意義,可是,能夠相減


小案例:

# include <stdio.h>
int main(void)
{
    int * p;
    /*
        p 是變量的名字,int * 表示p變量存放的是int類型的變量地址
        int * p 不表示定義了一個名字叫作 * p的變量,這是錯誤的理解
        int * p p是變量名,p變量的數據類型是int * 類型,實際上就是存放int變量地址的類型
    */
    int i = 5;
    p = &i;
    /*
        1    p保存了i的地址,所以p指向i
        2    p不是i,i也不是p,修改p的值不影響i的值,修改i的值也不影響p的值
        3    若是一個指針變量指向了某個普通該變量,
            那麼, *指針變量 就徹底等同於 普通變量
    */
    printf("%d \n",*p);
    return 0;
}


學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog

相關文章
相關標籤/搜索