簡體   English   中英

檢查指針是否大於0?

[英]Checking if pointer is greater than 0?

我試圖確定檢查大於0的指針的目的:

void someFunction(int *src) {
   int val = *src++;
   if( val > 0 ) {
       // Do something?
   }
}

如果數據類型是指針,那么指針的值不總是內存地址嗎? 進行指針算術是否可以將val設置為0?

這是一個簡單的空指針檢查嗎?

val 不是指針; 它是一個int ,其值是通過取消引用src獲得的。

你不檢查,如果指針> 0,則檢查是否在舉辦地點指向的值大於0 src單獨將是一個地址, *src是在那個地址保存的值。

那不是在檢查指針是否大於零。 它檢查指向的值是否大於零,並同時將指針前進一。 以下是一些等效的代碼,可以幫助您理解:

void someFunction(int *src) {
   int val = *src; // Dereferencing the pointer
   src++;          // Moving the pointer

   if( val > 0 ) {
       // Do something?
   }
}

val只是一個int ,而不是一個指針。

那不是檢查指針,而是檢查整數。 *運算符取消引用該指針,產生該指針當前指向的值。 例如,如果src指向0 ,則val將為0 ,而if語句的條件將為false。

仔細看一下給您帶來麻煩的那條線:

int val = *src++;

您應該認識到這是工作中的后綴增量運算符,因此我們可以將該行分為兩部分:

int val = *src;
++src;

此時, val在函數開始時指向 src值; 同時src本身現在指向下一個內存位置。

此處沒有檢查指針src是否為null的指針,並且它的null(或其他方式)與val存儲的值無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM