gpt4 book ai didi

c++ - 我的 C++ 程序中出现此错误是什么原因?

转载 作者:太空狗 更新时间:2023-10-29 21:41:04 25 4
gpt4 key购买 nike

我编写了以下程序,使用名为 的函数将一个值(此处为 3)设置到内存中由名为 p 的指针指向的某个位置>f() 并在 main 中打印它:

#include <iostream>
using namespace std;

void f(float* q)
{
q=new float;
*q=3;
}

int main()
{
float *p= nullptr;
f(p);
cout<<*p;
return 0;
}

但是当我想编译它时,我收到这个编译时错误:

ap1019@sharifvm:~$ g++ myt.cpp
myt.cpp: In function âint main()â:
myt.cpp:12:11: error: ânullptrâ was not declared in this scope
float *p=nullptr;
^
ap1019@sharifvm:~$

怎么了?

最佳答案

您的编译器似乎不支持指针文字 nullptr。您可以改用空指针常量。例如

float *p = 0;

但无论如何你的程序是错误的。它存在内存泄漏,因为您将已分配内存的地址存储在函数 f 的局部变量中,该变量将在退出该函数后被销毁。

程序可能如下所示

#include <iostream>
using namespace std;

void f( float **q)
{
*q = new float;
**q = 3;
}

int main()
{
float *p = 0;

f( &p );

cout << *p;

delete p;

return 0;
}

或者您可以使用对指针的引用。例如

#include <iostream>
using namespace std;

void f( float * &q)
{
q = new float;
*q = 3;
}

int main()
{
float *p = 0;

f( p );

cout << *p;

delete p;

return 0;
}

关于c++ - 我的 C++ 程序中出现此错误是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842180/

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