我目前正在学习C ++。没在学校 使用书籍,教程和练习。
让我感到困惑的一件事是,我何时无法使用答案来查找指针,而是何时将解引用运算符(*)用于指针。例如,从我目前正在阅读的C ++入门中:
char *cp = get_string();
if (cp) /* ... */ // true if the pointer cp is not zero
while (*cp) /* ... */ // true if *cp is not the null character
我不明白为什么在if语句中它只是不带dereference运算符的cp,然后在while语句中它使用dereference运算符。还有其他示例,例如在for循环中混合使用,但这是本书中最新的示例,使我感到困惑。在此先感谢您的帮助。
简介:什么时候仅使用指针的变量名而不进行取消引用,何时将其与取消引用一起使用。以及如何区分。
指针是一个变量,其值是另一个变量或对象的地址。我们说指针“指向”另一个对象。
编写表达式时,cp
表示指针变量。*cp
表示指针变量保存其地址的变量或对象。
尝试在您的头脑中清楚“指针”和“所指事物”之间的区别。这是两件截然不同的事情,每件事情都有自己的生存期和存储要求。
因此,要解决您的问题中的代码,请if (cp)
测试指针。它的缩写if ( cp != nullptr )
,即指针是否已设置为指向某处?(换句话说,指针当前是否持有另一个对象的地址?)
if (*cp)
意味着if (*cp != 0)
,它正在询问其地址存储在指针中的对象的值(换句话说,所指向的对象的值)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句