亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學習啦>學習英語>專業(yè)英語>計算機英語>

      c語言指針的用法

      時間: 長思709 分享
        大家都知道指針是C語言中的精粹,學好了指針基本就等于學號了C語言,它能直接對物理地址進行訪問,具有雙重功能,是嵌入式設(shè)計中必不可少的一門語言。C語言功能強大的主要原因就是具有指針結(jié)構(gòu)。指針是一種特殊的數(shù)據(jù)類型,直接指向目標的存儲地址,實現(xiàn)直接訪問對象存儲空間的功能。下面小編就來為大家介紹下c語言指針的用法。
        c語言指針的用法如下:
        下面談?wù)剮讉€指針中常見的問題:
        1.聲明指針和取指針變量所指向內(nèi)存空間的數(shù)據(jù)時所用到的 * 符號的意義
        如:
        int a;
        int *p=&a;??
        *p=3;
        在int *p=&a中 * 僅僅為了說明p是一個指向整形數(shù)據(jù)的變量,而在*p=3中 * 表示取p所指向內(nèi)存單元的數(shù)據(jù),即*p與a等價;
        初學者容易犯下面這個錯誤:
        比如寫一個交換函數(shù):
        void swap(int *a,int *b)
        {
        int *temp=*a;
        *a=*b;
        *b=*temp;
        }
        犯這種錯誤的原因是由于對 *的理解不深,a是一個指針變量,*a則表示取a所指單元的數(shù)據(jù),是一個int型變量,而int *temp中表示聲明了一個指針變量temp,兩者數(shù)據(jù)類型不匹配,因此在編譯時會報錯。
        2.理解指針變量的含義
        很多情況下都是由于對指針變量的含義理解不透徹造成錯誤。一個指針變量的含義表示它是指向一個內(nèi)存單元,其本身的值是內(nèi)存單元的地址,并不是所指內(nèi)存單元中所存的數(shù)據(jù)。
        很多初學者也很容易犯下面這種錯誤,比如同樣是swap函數(shù):
        void swap(int *a,int *b)
        {
        int *temp;
        temp=a;
        a=b;
        b=temp;
        }
        犯這種錯誤正是由于沒有理解指針變量的含義,錯誤地認為指針變量是所指單元的數(shù)據(jù)。上述代碼中僅僅只是交換了a,b,temp這三個指針變量,但是它們所指單元里的數(shù)據(jù)并沒有進行交換,因此無法達到交換數(shù)據(jù)的目的。
        3.使用指針時會忽略的問題
        ?? 在深刻理解指針的含義之后,在使用指針的時候要特別注意,指針在沒有被賦值的時候,即沒有讓指針指向特定的內(nèi)存單元時,不能用指針進行操作。
        比如下面的代碼:
        char s1[10]="12345";
        char *p;
        strcpy(p,s1);
        printf("%s",p);
        這樣的代碼雖然在編譯時不會報錯,但是在運行時是絕對不會通過的,因為犯了一個很嚴重的問題在 strcpy(p,s1) 中使用了指針p,但是在使用之前卻沒有對p賦值(即讓p指向特定的存儲單元),因此p的值是不確定的,無法將s1內(nèi)容復制到*p中,如果p指向的是存放系統(tǒng)數(shù)據(jù)的單元,則可能會造成程序崩潰。

      c語言指針的用法

      大家都知道指針是C語言中的精粹,學好了指針基本就等于學號了C語言,它能直接對物理地址進行訪問,具有雙重功能,是嵌入式設(shè)計中必不可少的一門語言。C語言功能強大的主要原因就是具有指針結(jié)構(gòu)。指針是一種特殊的數(shù)據(jù)類型,直接指向目標
      推薦度:
      點擊下載文檔文檔為doc格式
      515340