gpt4 book ai didi

C++ 将指针分配给指针

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:04 24 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

void fn(int* input_ptr) {
int *ptr2 = input_ptr;
cout << "pointer 2 is " << *ptr2 << endl;
}

int main() {
int *ptr1;
*ptr1 = 7;
fn(ptr1);
}

这个例子有效,当我传递一个指针给函数,并将其赋值给函数内部的一个临时指针时,结果显示指针 2 也是 7。然而,

#include <iostream>
using namespace std;

int main() {
int *ptr1;
*ptr1 = 7;
int *ptr2;
*ptr2 = ptr1; // or I have also tried *ptr2 = *ptr1
cout << "pointer 2 is " << *ptr2 << endl;
}

同样的步骤在main函数中不起作用。我知道您可以使用不带星号的地址 ptr2 = ptr1,它会起作用。

但是,在第一个示例中,我可以直接将指针作为函数参数分配给带有星号的新指针(或称为取消引用?),但在第二个示例中,我不能在主函数中这样做。

谁能帮忙解答一下这个问题?感谢您的宝贵时间。

最佳答案

在这两个示例中,您都取消引用了一个未初始化的指针,这是未定义的行为

对于指针赋值题,可以直接赋值:

 int *ptr2 = ptr2; 

在您的第二个示例中,前提是您确保 ptr1 指向有效位置。例如,

int x;
int *ptr1 = &x; /* ptr1 now points to the address of x */
*ptr1 = 7;
int *ptr2;
ptr1 = ptr2;

关于C++ 将指针分配给指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40450282/

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