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;