无法理解指针中的符号:* 和 ** 的意义

6

我有一个指针问题。我知道这个是什么意思:

*name

我理解这是一个指针。

我一直在搜索,但我既不了解它的功能,也没有找到有用的信息。

**name

这里的“**”指的是int类型的指针name,而不是乘法运算符

有人能帮我吗?


指向指针的指针:http://www.tutorialspoint.com/cprogramming/c_pointer_to_pointer.htm - utarid
哇,速度好快!谢谢大家 :) - MLMH
4
这完全取决于 *name**name 的上下文。 - juanchopanza
很显然,在5 * name中它是乘法。但那是一个二元(2参数) operator *,而不是一元(1参数) operator* - MSalters
2
@MSalters,你在考虑运算符,但回答者们都在考虑类型。所以,上下文很重要。 - juanchopanza
@juanchopanza:对于初学者来说,唯一重要的上下文是一元运算符与二元运算符的使用。因为类型定义有意呈现用法,所以无论我们讨论 int **name 还是 std::cout << **name 都没有关系。 - MSalters
5个回答

19

注意:如果没有适当的上下文,使用*name**name是模棱两可的。它可能表示(a)解引用操作符(b)乘法操作符

考虑到您谈论的是代码中类似以下场景的情况:

  • char * name;
  • char **name;

在这种情况下,

  • *name

name是一个指向char类型的指针。

  • **name

name是一个指向指向char类型的指针的指针。

请不要混淆“双指针”,有时用于表示指向指针,但实际上应该表示指向双精度数据类型变量的指针。

下面是一个示意图

enter image description here

正如上面所述,我们可以说

char value = `c`;
char *p2 = &value;   // &value is 8000, so p2 == 8000, &p2 == 5000
char **p1 = &p2;     // &p2 == 5000, p1 == 5000

所以,p1 在这里是一个指向指针的指针。希望现在可以更清楚了。


@juanchopanza感谢您的建议。已做出相应更新。 - Sourav Ghosh
“指向类型的指针”是什么意思?在C++中,您无法指向类型。 - Adam
@Adam 我尝试了泛化,将数据和函数结合起来。如果有更好的词汇建议,请告诉我。 - Sourav Ghosh
在第一种情况下,我会说“name是一个指向char的指针”,而在第二种情况下,“name是一个指向指向char的指针的指针”。 - Adam

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

如果您将每个级别都视为另一种变量类型(因此,将 *int 视为一种类型),那么更容易理解。 另一个例子:

typedef int* IntPointer;
IntPointer a; // a is an IntPointer
IntPointer* b; // b is a pointer to an IntPointer!

希望这能帮到你!

5
指针存储变量的地址,而指向指针存储另一个指针的地址。
int var
int *ptr;
int **ptr2;

ptr = &var;
ptr2 = &ptr;

cout << "var : " << var;
cout << "*ptr : " << *ptr;
cout << "**ptr2 : " << **ptr2;

你可以在这里查看相关的C++技术指南:链接

0
int a = 5;// a is int, a = 5.
int *p1 = &a; // p1 is pointer, p1 point to physical address of a;
int **p2 = &p1; // p2 is pointer of pointer, p2 point to physical adress of p1;

cout<< "a = "<<a << " *p1 = "<<*p1<<" *(*p2) = " << *(*p2)<<endl;

-2

在这种情况下,name将是指向指针的指针。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接