[英]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.