c++ - 我们可以在 C 中返回一个包含数组的结构吗?

标签 c++ memory allocation

这是一个结构:

struct elem {
    int a[100];
    int val;
};

elem foo() {
    elem Result;
    Result.a[0] = 5;
    return Result;
}

int main () {
    elem aux = foo();
    //is Result passed back to aux, so that we can use its array?
    cout<<aux.a[0]<<"\n"; // 5
}

我知道函数可以返回简单的结构。 他们还可以返回包含数组的结构吗?内存中发生了什么?

还有:当我们声明 elem Result 时;在函数中,数组是用0初始化的,还是只取随机值?

最佳答案

是的,在 C 和 C++ 中都可以。

数组与结构的其余部分一起逐个元素地复制。对于大型阵列,这可能会很慢。


is the array initialised with 0, or it just takes random values?

数组未初始化,因此它包含不确定的值。访问它们会导致未定义的行为。

关于c++ - 我们可以在 C 中返回一个包含数组的结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045706/

相关文章:

c++ - 你如何从 unicode 值中推断出字符集?

java - Java对象数组创建后的内存大小是多少?

java - 是什么让我的代码使用这么多内存?

caching - Apache Ignite 缓存驱逐仍在内存中

c++ - 查找内存分配错误

algorithm - 有约束的资源分配算法

c - 为任意长度的字符串动态分配内存

c++ - 来自 CMake 的 MSVC 是否与 _MSC_VER 相同?

c++ - 如何将 C++ 库作为共享对象文件 (.so) 加载到 Python 中?

c++ - `while (i != 0 && (a[i].p != 0 || a[i].q != 0));` 除了卡住还能做什么?