當前位置:才華齋>計算機>C語言>

c語言中指標的使用方法

C語言 閱讀(2.93W)

C語言的學習中,我們遇到的最大問題莫過於指標的使用了。指標是C語言的一大特色,使用指標我們可能靈活的訪問記憶體。但這一大特性也同時給我們帶來了很大的問題,不當的使用指標就會給我們程式帶來大的災難。現在我就給大家講一講我使用指標的一些體會吧。

c語言中指標的使用方法

  一、定義指標的時候一定要初始化。

變數定義的時候給變數初始化,這是保證不出錯的一個很好的習慣。尤其是在指標的使用上,如果我們沒有給指標初始化,就會出現野指標,該指標的指向並不是我們所希望的,一旦錯誤的釋放了這個指標,就會發生記憶體的.訪問。那麼如何初始化指標變數呢,一般有以下幾種方法:

1、初始化空指標

int* pInteger=NULL;

2、用已有的變數初始化

int length=5;

int* pInteger=&length;

3、用記憶體分配函式給指標分配空間

int* pInteger=(int*)malloc(10*sizeof(int));//為指標分配大小為10個整數的記憶體空間。

  二、正確的申請和釋放記憶體

指標使用之後,如果不釋放指標所使用的記憶體,就會造成記憶體的洩露,這樣就會有大量記憶體由於沒能釋放,別的程式不可以使用這部分記憶體,如果一個程式不停申請記憶體而不去釋放記憶體,很快就會造成系統的崩潰。那麼如何正確的申請和釋放記憶體呢。

1、指標初始化,上面已講

2、正確的申請記憶體

如何申請記憶體才算是正確的申請記憶體呢?首先要判斷指標是否為空,如果不為空,則釋放該指標所指向的記憶體塊,如果不釋放這塊記憶體,而直接就申請記憶體,就會造成記憶體的洩露。申請記憶體後,一定要判斷是否申請成功。

如:int* pInteger=NULL;//指標定義處

...

if(pInteger != NULL)

{

free(pInteger);

pInteger=NULL;//指標釋放之後並不為空,要設定其為空

}

pInteger=(int*)malloc(10*sizeof(int));

if(pInteger != NULL)

{

printf("記憶體申請沒有成功n!");

exit(0);

}

...

3、記憶體釋放

程式使用完了指標,一定要記得釋放指標指向的記憶體。釋放後一定要記得設定指標為空指標。因為free函式在釋放指標後,只是單純的釋放了該指標指向的記憶體空間,而沒有將指標賦為空值。所以一定要記得在釋放指標後將指標賦為空值。

如:

int* pInteger=NULL;//指標定義處

...

free(pInteger);//釋放指標

pInteger=NULL; //指標賦為空值

  三、使用指標時一定要判斷指標是否為空

在使用指標時一定要判斷指標是否為空,如果為空,則做相應的操作。如果不做判斷,則可能錯誤的使用空指標。

如:char* dest=NULL;

...

strcpy(dest,"string");//如果dest為空則出錯

正確的使用方法為:

if(dest == NULL)

{

dest=(char*)malloc(7*sizeof(char));//因為字串以“