无法理解符号:* 和 ** 带指针
Not able to understand the notations : * and ** with pointers
我的指针有问题。我知道这是做什么的:
*name
我明白这是一个指针。
我一直在搜索,但我既不了解它的作用,也没有找到有用的信息
**name
The context is int **name, not multiplication
有人可以帮我吗?
** 在本例中为名称。将是指向指针的指针。
NOTE: Without the proper context, the usage of *name
and **name
is ambiguous. it may portrait (a). dereference operator (b) multiplication operator
考虑到您正在谈论这样的场景
char * name;
char **name;
在代码中,
*name
name
是指向 char
.
的指针
**name
name
是一个指针,指向一个char
的指针。
请不要与"double-pointer"混淆,它有时用来表示指向指针的指针,但实际上应该表示指向双精度数据类型的指针变量.
下图
如上,我们可以说
char value = `c`;
char *p2 = &value; // &value is 8000, so p2 == 8000, &p2 == 5000
char **p1 = &p2; // &p2 == 5000, p1 == 5000
所以,这里的 p1
是一个指向指针的指针。希望现在一切都清楚了。
指针存储变量的地址,指向指针的指针存储另一个指针的地址。
int var
int *ptr;
int **ptr2;
ptr = &var;
ptr2 = &ptr;
cout << "var : " << var;
cout << "*ptr : " << *ptr;
cout << "**ptr2 : " << **ptr2;
你可以看看here
其实很简单,考虑一下:
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!
希望对您有所帮助!
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;
我的指针有问题。我知道这是做什么的:
*name
我明白这是一个指针。
我一直在搜索,但我既不了解它的作用,也没有找到有用的信息
**name
The context is int **name, not multiplication
有人可以帮我吗?
** 在本例中为名称。将是指向指针的指针。
NOTE: Without the proper context, the usage of
*name
and**name
is ambiguous. it may portrait (a). dereference operator (b) multiplication operator
考虑到您正在谈论这样的场景
char * name;
char **name;
在代码中,
*name
name
是指向 char
.
**name
name
是一个指针,指向一个char
的指针。
请不要与"double-pointer"混淆,它有时用来表示指向指针的指针,但实际上应该表示指向双精度数据类型的指针变量.
下图
如上,我们可以说
char value = `c`;
char *p2 = &value; // &value is 8000, so p2 == 8000, &p2 == 5000
char **p1 = &p2; // &p2 == 5000, p1 == 5000
所以,这里的 p1
是一个指向指针的指针。希望现在一切都清楚了。
指针存储变量的地址,指向指针的指针存储另一个指针的地址。
int var
int *ptr;
int **ptr2;
ptr = &var;
ptr2 = &ptr;
cout << "var : " << var;
cout << "*ptr : " << *ptr;
cout << "**ptr2 : " << **ptr2;
你可以看看here
其实很简单,考虑一下:
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!
希望对您有所帮助!
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;