c++ - 函数返回指向 int 的指针

标签 c++ pointers

当调用 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/

相关文章:

c++ - 删除指针 vector 时调试断言失败 C++

c++ - Nouveau 内核在 Allegro5-C++ 上拒绝了 Pushbuf

c++ - 控制台输出笑脸

c++ - 指针可以在函数调用期间转换为数组吗?

c++ - 使用动态内存 C++ 移动指针

c - 在 chars.exe : 0xC0000005: Access violation reading location 0x00000004 中的 0x011414CE 抛出异常

c++ - 游戏 map 对象属性的位域与多态性

c++ - 如何从 'this'创建智能指针?

c - 如何在C中从main传递和返回指针

c - 指针数组和括号内的指针