gpt4 book ai didi

c++ - 在不为数组分配内存的情况下工作

转载 作者:行者123 更新时间:2023-11-30 01:53:54 25 4
gpt4 key购买 nike

这段代码是我 friend 写的。它工作正常。目的是将数字的每个数字分隔到数组的每个元素中。但是 a 的内存没有在任何地方分配。知道这个是如何工作的吗?

    #include<iostream> 
#include<math.h>
using namespace std;

int* arrray(int num, int *x){
int len=0;
while(num!=0){
x[len]=num%10;
num/=10;
len++;
}
return x;
}
int main(){
int num1=123;
int l=0,k=0;
int *a=arrray(num1,a);
int n1[3];
for(int i=2;i>=0;i--){
n1[l]=a[i]; l++;
}

}

最佳答案

视觉C++

错误 C4700:使用了未初始化的局部变量“a”

Cygwin 64 位

它确实可以编译和运行,遗憾的是在代码的第 8 行有一个段错误,因为array a 是未初始化的。

这是有效的,因为它是未定义的行为,即使会有警告:

警告:“a”在此函数中使用时未初始化 [-Wuninitialized] 或在 Visual C++ 中出错。

无论如何,请记住 Effective C++ 中的 Scott Meyers:第 47 条:确保非局部静态对象在使用前进行初始化。我知道这是针对非局部静态对象的,但一般来说你应该初始化你的变量。

关于c++ - 在不为数组分配内存的情况下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22647831/

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