c++ - 通过函数传递指针然后变得乱码

标签 c++ function pointers

我有以下代码,它似乎在打印乱码。但是,当我将数组的大小从“r”更改为 5000 时,它工作得很好。任何人都可以解释这种行为并告诉我如何解决它吗?我对此做了很多研究,但找不到答案。

#include <iostream>
#include <cstring>
using namespace std;
int * check (int leng)
{
    const int r = leng;
    int arr [r]; 
    memset(arr,0,sizeof(arr)); 
    int * x = arr; 
    return x;
}    
main()
{
    int * l = check(20); 
    for (int g=0; g<5; g++) cout << l[g] << ' '; 
}

最佳答案

xarr 的地址,arr 是一个堆栈变量,所以你不能将它作为返回值传递。如果您希望 check 返回一个指向数组的指针,您需要使用 new 分配它:arr = new int[r]。请注意,您最终需要通过 delete[] 释放内存。有关动态内存分配的更多信息,您可以查看 this link。 .

关于c++ - 通过函数传递指针然后变得乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30927829/

相关文章:

function - 可以声明将在 Rust 中对未使用的结果发出警告的函数吗?

c - 指向结构或结构本身的指针?

c - 在 C 中,如何将结构中指针数组中的所有元素初始化为 null?

c - 在C中,具体类型的指针如何对待所指向的内存空间?

C++ 重载 getter 两次,一次返回指针,一次返回 const 引用,失败

c++ - 任意维数组

c++ - 为什么我应该/不应该使用 "new"运算符来实例化一个类,为什么?

c++ - 从 C++ 中的函数返回引用

python - 我在 Python 3 的字典中调用函数

c++ - 从 visual studio 将 SDL2 游戏导出到 Windows