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