商務英語計算機英語

c語言指標的用法

本文已影響 1.26W人 
padding-bottom: 150.94%;">c語言指標的用法
大家都知道指標是C語言中的精粹,學好了指標基本就等於學號了C語言,它能直接對實體地址進行訪問,具有雙重功能,是嵌入式設計中必不可少的一門語言。C語言功能強大的主要原因就是具有指標結構。指標是一種特殊的資料型別,直接指向目標的儲存地址,實現直接訪問物件儲存空間的功能。下面小編就來為大家介紹下c語言指標的用法。  c語言指標的用法如下:  下面談談幾個指標中常見的問題:  1.宣告指標和取指標變數所指向記憶體空間的資料時所用到的 * 符號的意義  如:  int a;  int *p=&a;??  *p=3;  在int *p=&a中 * 僅僅為了說明p是一個指向整形資料的變數,而在*p=3中 * 表示取p所指向記憶體單元的資料,即*p與a等價;  初學者容易犯下面這個錯誤:  比如寫一個交換函式:  void swap(int *a,int *b)  {  int *temp=*a;  *a=*b;  *b=*temp;  }  犯這種錯誤的原因是由於對 *的理解不深,a是一個指標變數,*a則表示取a所指單元的資料,是一個int型變數,而int *temp中表示聲明瞭一個指標變數temp,兩者資料型別不匹配,因此在編譯時會報錯。  2.理解指標變數的含義  很多情況下都是由於對指標變數的含義理解不透徹造成錯誤。一個指標變數的含義表示它是指向一個記憶體單元,其本身的值是記憶體單元的地址,並不是所指記憶體單元中所存的資料。  很多初學者也很容易犯下面這種錯誤,比如同樣是swap函式:  void swap(int *a,int *b)  {  int *temp;  temp=a;  a=b;  b=temp;  }  犯這種錯誤正是由於沒有理解指標變數的含義,錯誤地認為指標變數是所指單元的資料。上述程式碼中僅僅只是交換了a,b,temp這三個指標變數,但是它們所指單元裡的資料並沒有進行交換,因此無法達到交換資料的目的。  3.使用指標時會忽略的問題  ?? 在深刻理解指標的含義之後,在使用指標的時候要特別注意,指標在沒有被賦值的時候,即沒有讓指標指向特定的記憶體單元時,不能用指標進行操作。  比如下面的程式碼:  char s1[10]="12345";  char *p;  strcpy(p,s1);  printf("%s",p);  這樣的程式碼雖然在編譯時不會報錯,但是在執行時是絕對不會通過的,因為犯了一個很嚴重的問題在 strcpy(p,s1) 中使用了指標p,但是在使用之前卻沒有對p賦值(即讓p指向特定的儲存單元),因此p的值是不確定的,無法將s1內容複製到*p中,如果p指向的是存放系統資料的單元,則可能會造成程式崩潰。

猜你喜歡

熱點閱讀

最新文章

推薦閱讀