C++ C+中以下语句的类型+;
我无法正确理解这些类型: 用于:C++ C+中以下语句的类型+;,c++,pointers,C++,Pointers,我无法正确理解这些类型: 用于: *j &j **j *&j *k &k **k *&k 和*k 我的想法: int**-双整数指针 j指针的地址-地址的类型是什么?(十六进制值) int*** 指针,指向j指针的地址 int*** 双指针地址k int**** ? ? 如注释*和&中所述,根据它们是否出现在声明或语句中,它们具有不同的语义: *j取消引用j &j取j **j双解引用单个指针(错误) *&j取消引用j的地址(相当于j) *k取消引用k(生成另一个指针) &k取k **k双解引用双
*j
&j
**j
*&j
*k
&k
**k
*&k
和*k
int**
-双整数指针j
指针的地址-地址的类型是什么?(十六进制值)int***
j
指针的地址int***
k
int****
如注释
*
和&
中所述,根据它们是否出现在声明或语句中,它们具有不同的语义:
*j
取消引用j
&j
取j
**j
双解引用单个指针(错误)*&j
取消引用j
的地址(相当于j
)*k
取消引用k
(生成另一个指针)&k
取k
**k
双解引用双指针(OK)*&k
取消引用k
的地址(相当于k
)&*k
获取被解除引用的指针的地址注意: j指针的地址-地址的类型是什么?(十六进制值) 十六进制值仅用作指针的常规表示形式,否则这些只是数字/值。十六进制不符合类型,它只是一个数字表示。
*
在中的声明中用于声明指针,但在语句中它可用于取消指针引用以调用乘法运算符。因此1)*j
给定类型的j
是int*
将产生int&
<声明中的code>&用于声明左值引用,但在语句中,它可用于获取地址或调用按位and运算符。我建议阅读并查看您的理解所在。提示:int*j
不仅意味着“j
是int*
”而且“*j
是int
”的意思。这是有意的。谢谢你的回答。所以*&互相否定,语句*&k=k是真的?还有另一个问题-只有在变量被引用至少x次的情况下,我们才能取消引用x次,对吗?(比如,我们不能双解引用,单指针,但我们可以三重解引用第五级指针?@Piodo关于您的附加问题:是的。取消对int***
的引用一次产生int**
,两次产生int*
。
int* j;
int** k;