gpt4 book ai didi

c - 从 C 中的函数返回整数数组

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

我的程序如下

#include<stdio.h>

int *intial(int);

int main (void)
{
int i, *b;

b=intial(5);
for(i=0;i<5;i++)
printf("%d\t",*(b+i));
getch();
}

int *intial(int t)
{
int i, *a;

for(i=0;i<t;i++)
a[i]=i;
return a;
}

但我得到的是垃圾值。

我也尝试过这个

int *intial(int t)
{
int i, a[10];

for(i=0;i<t;i++)
a[i]=i;
return a;
}

但是它不起作用。

最佳答案

为了正常工作,您的函数应为

int *intial(int t)
{
int i;
int *a = malloc(t * sizeof(*a));
if (!a) return NULL; // error checking
for(i=0;i<t;i++) {
a[i]=i;
}
return a;
}

此函数的“调用条约”是,返回的指针是经过 malloc() 处理的指针,调用者有义务对其进行 free()

当然,调用者也应该进行适当的错误检查:

int main()
{
int i;
int *b;
b=intial(5);
if (!b) {
fprintf(stderr, "Malloc error.\n");
return 1;
}
for(i=0;i<5;i++) {
printf("%d\t",*(b+i)); // *(b+i) should be replaced with b[i] for readability
}
free(b); // free the memory
return 0;
}

关于c - 从 C 中的函数返回整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743779/

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