c++ pointer declaration and assignment
1 2 3 4 5 6 7 | int num1 = 8; //okay int *pointer; //okay *pointer = &num1; //NOT okay, compiler says (Error:a value of type int* cannot be //assigned to an entity of type"int") int num2 = 8; //okay int *pointer = &num2; //okay |
我很困惑为什么第一部分会出错,而第二部分不会,在我看来它们是一样的。
在转让声明中:
1 | *pointer = &num1; //NOT okay |
在声明中:
1 | int *pointer = &num2; //okay |
尽管与赋值语句的外观相似,但这会初始化
拆下第三行中的*。它返回当前存储在变量指针中的位置/地址处的值,并将其解释为int。
以下更多的是一般性的描述,而不是直接回答您的问题…
如果声明某种类型的变量,那么也可以声明指向它的另一个变量。
例如:
有两种方法可以"查看"变量
您可以将
b 视为int* 类型的变量。您可以将
*b 视为int 类型的变量。
因此,一些程序员会声明
但事实上,这两个声明是相同的(空格毫无意义)。
可以使用
您可以读取指向值(如
1 | int *pointer = &num2; |
是一样的
1 2 | int *pointer; pointer = &num2; |
不
1 2 | int *pointer; *pointer = &num2; |
错误信息非常清楚:表达式
当您在指针上使用取消引用操作符
要使
1 | pointer = &num1; |
操作符