gpt4 book ai didi

c - 在c中使用带有**的指针

转载 作者:行者123 更新时间:2023-11-30 19:42:02 25 4
gpt4 key购买 nike

我对 C 非常陌生,目前在指针方面遇到了一些问题,我不确定我的逻辑在这个问题上是否正确澄清会很好。

第二个表达式合法吗?为什么或者为什么不?这是什么意思?

int** x = ....;
... **x ...

这就是给出的所有问题,我想出了以下答案(我认为它在大概范围内)

int** x 会将指针 x 初始化为等号后面的任何地址/值。**x ...将取消引用指向值/变量的指针

编辑中提出的问题链接只是显示了 int* p 和 int *p 之间的区别,这不是我问的问题,我已经明白了。

最佳答案

int *x 是指向 int 的指针。 int** yy 定义为指向 int 的指针,因此它指向一个指针,而后者指向一个 >int。示例:

int n = 42;
int* x = &n; // points to n
int** y = &x; // points to x, which points to n

在这种情况下,y 是一个指向指针的指针。第一个间接 *y 为您提供一个指针(在本例中为 x),然后第二个间接间接取消引用指针 x,因此 * *y 等于 42

使用 typedef 使一切看起来更简单,并让您意识到指针本身就是变量,就像任何其他变量一样,唯一的异常(exception)是它们存储地址而不是数字(值):

typedef int* pINT;

int n = 42;
pINT x = &n;
pINT* y = &x; // y is a pointer to a type pINT, i.e. pointer to pointer to int

关于c - 在c中使用带有**的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com