gpt4 book ai didi

visual-c++ - 为什么一个指针不能存储另一个指针的地址?

转载 作者:行者123 更新时间:2023-12-04 06:45:04 26 4
gpt4 key购买 nike

我有一个指针如下:

int val2 = 90;

int *p = &val2;

然后,我做:

int *pp = &p; // Line 3

第 3 行 是非法的。我知道它应该写成 int **pp = &p,但我不明白为什么。普通变量的地址和指针的地址不一样吗?

最佳答案

int *pppp 定义为指向 int 的指针,但您试图用指针的地址对其进行初始化到 int 而不是 int 的地址。由于“int 的地址”和“指向 int 的指针的地址”不具有相同的类型,编译器不会让你这样做(至少在没有转换的情况下,尽管你几乎肯定不我想这样做)。

是的,这两种类型的指针可能大小相同,因此 CPU 可以毫无问题地将数据从一个位置移动到另一个位置。然而,编译器会进行类型检查,以帮助您避免搬起石头砸自己的脚,这就是它在这里所做的。它可以让您使用上面提到的强制转换来执行您要求的操作,但由于您所做的事情意义不大或没有意义,因此如果您真的坚持这样做,则需要使用强制转换。

关于visual-c++ - 为什么一个指针不能存储另一个指针的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10385868/

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