gpt4 book ai didi

c - 为什么数组值与指定值不同 C 程序

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

我编写了一段小代码,它接受一个包含 10 个值的数组,将该数组传递给一个函数,该函数将每个值加倍。该数组打印函数内的预期值( double )。回到主函数,打印的输出在 for 循环中包含索引 1、2 和 3 的垃圾值,意味着打印所有值。为什么这些值会改变?主函数和被调用函数的地址相同。

StructA doubleArray(int* alist, int b) {

StructA doubled;
int temp[b];
for(int i=0; i < b; i++){
temp[i] = 2 * alist[i];
}
doubled.a = temp;
doubled.b = b;
return doubled;
}

int main() {

int arange[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int len = 10;
StructA hasDoubledValues = doubleArray(arange, len);
printf("\nvalues in main :");
for(int k = 0; k < hasDoubledValues.b; k++){
printf(" %d \n", hasDoubledValues.a[k]);
}
return 0;
}

其打印值为:0 0 -14334592 32507 8 10 12 14 16 18我期望这些值是:0 2 4 6 8 10 12 14 16 18

最佳答案

int temp[b]; 是函数的局部变量。一旦从函数返回,该内存的生命周期就会停止,访问它会产生未定义的行为。

关于c - 为什么数组值与指定值不同 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559084/

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