当调用 add(4) 时,我的 main() 崩溃了。
据我了解 int* add,它应该返回一个指向整数的指针。那么,我主要可以说:
int * a = add(3);
返回一个指向 int 的指针。
请解释我做错了什么。
#include <cstdlib>
#include <iostream>
using namespace std;
int* add (int a) {
int * c, d;
d = a + 1;
*c = d;
cout << "c = " << c << endl;
return c;
}
int main(int argc, char *argv[])
{
int a = 4;
int * c;
c = add(4);
system("PAUSE");
return EXIT_SUCCESS;
}
最佳答案
问题是您已经声明了一个 int*
但没有给它任何指向的东西。你需要做的是用内存位置初始化它(省略错误检查)
int* c = new int();
...
*c = d; // Now works
稍后您需要确保释放此内存,因为它是已分配的资源。
不过,更好的解决方案是使用引用。指针有几个讨厌的属性,包括未初始化的值、NULL
、需要释放等等……其中大部分在引用中不存在。下面是如何在这种情况下使用引用的示例。
void add (int a, int& c) {
int d;
d = a + 1;
c = d;
cout << "c = " << c << endl;
}
int c;
add(4, c);
关于c++ - 函数返回指向 int 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513191/