C 指針值

2018-07-05 11:21 更新

學(xué)習(xí)C - C指針值

測(cè)試NULL指針

假設(shè)你創(chuàng)建一個(gè)這樣的指針:

int *pvalue = NULL;

NULL是表示C指針的特殊符號(hào)。

該符號(hào)通常定義為((void *)0)。

當(dāng)您將0分配給指針時(shí),相當(dāng)于將其設(shè)置為NULL,因此您可以編寫以下內(nèi)容:

int *pvalue = 0;

因?yàn)镹ULL等于零,如果要測(cè)試pvalue是否為NULL,您可以寫這個(gè):

if(!pvalue)
{
   // the pointer is NULL! . . .
}

當(dāng)p值為NULL時(shí),pvalue將為true。

或者,您可以按如下所示編寫測(cè)試:

if(pvalue == NULL)
{
  //the pointer is NULL! . . .
}

常量的指針

您可以使用指針上的const關(guān)鍵字來(lái)指示指向的值不能更改。

以下是一個(gè)指向const值的指針聲明的示例:

long value = 9L;
const long *pvalue = &value;               // Defines a pointer to a constant

您只聲明p值指向的值不能更改。

你很自由地做你想要的值:

value = 7L;

指向的值已更改,但您沒有使用指針進(jìn)行更改。

當(dāng)然,指針本身不是常數(shù),所以你仍然可以改變它指向:

long number = 8L;
pvalue = &number;                 // OK - changing the address in pvalue


常數(shù)指針

為了確保存儲(chǔ)在指針中的地址不能被改變,在指針的聲明中使用 const 關(guān)鍵字。

這里的如何你可以確保指針總是指向同一件事:

int count = 43;
int *const pcount = &count;       // Defines a constant pointer

第二個(gè)語(yǔ)句聲明并初始化pcount并指示地址存儲(chǔ)不得更改。

因此,以下語(yǔ)句將導(dǎo)致編譯時(shí)出現(xiàn)錯(cuò)誤消息:

int item = 34;
pcount = &item;                   // Error - attempt to change a constant pointer

您仍然可以更改pcount指向使用pcount的值:

*pcount = 345;                    // OK - changes the value of count

這引用通過(guò)指針存儲(chǔ)在count中的值,并將其值更改為345。

您可以創(chuàng)建一個(gè)常量指針,指向一個(gè)也是常量的值:

int item = 25;
const int *const pitem = &item;

項(xiàng)是一個(gè)常量指向常量,所以一切都是固定的。

您不能更改存儲(chǔ)在的地址pitem,你不能使用pitem修改它指向什么。

您仍然可以直接更改項(xiàng)的值。

如果你想使一切固定和不可侵犯,你可以指定項(xiàng)為const。

const int item = 25;
const int *const pitem = &item;
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)