无法理解符号:*和**带指针

MLM*_*LMH 6 c++ pointers dereference pointer-to-pointer

我的指针有问题.我知道这是做什么的:

*name
Run Code Online (Sandbox Code Playgroud)

我明白这是一个指针.

我一直在寻找,但我不明白这个人做了什么,也没有找到有用的信息

**name
Run Code Online (Sandbox Code Playgroud)

上下文是int**名称,而不是乘法

有人能帮助我吗?

Sou*_*osh 18

注意:没有适当的上下文,使用*name**name不明确.它可能是肖像(一).解引用运算符(b)乘法运算符

考虑到你在谈论像这样的场景

  • char * name;
  • char **name;

在代码中,

  • *name

name是指向a的指针char.

  • **name

name是指向a的指针char.

请不要与"双指针"混淆,"双指针"有时用于表示指针指针,但实际上应该指向指向双数据类型变量的指针.

一个视觉下面

在此输入图像描述

如上所述,我们可以说

char value = `c`;
char *p2 = &value;   // &value is 8000, so p2 == 8000, &p2 == 5000
char **p1 = &p2;     // &p2 == 5000, p1 == 5000
Run Code Online (Sandbox Code Playgroud)

所以,p1这里是一个指向指针的指针.希望现在能让事情变得清晰.


Bas*_*eld 8

它实际上很简单,考虑一下:

int a; // a is an int
int* b; // b is a pointer to an int
int** c; // c is a pointer to a pointer to an int
Run Code Online (Sandbox Code Playgroud)

如果您将每个级别视为另一个变量类型(因此,请参阅*int作为类型),则更容易理解.另一个例子:

typedef int* IntPointer;
IntPointer a; // a is an IntPointer
IntPointer* b; // b is a pointer to an IntPointer!
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!


use*_*345 5

指针存储变量的地址,指针指针存储另一个指针的地址.

int var
int *ptr;
int **ptr2;

ptr = &var;
ptr2 = &ptr;

cout << "var : " << var;
cout << "*ptr : " << *ptr;
cout << "**ptr2 : " << **ptr2;
Run Code Online (Sandbox Code Playgroud)

你可以看看这里