[英]Returning an integer array from a function in C
我的程序如下
#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;
}
您需要使用malloc()
为数组分配内存。 否则a
,因此b
不会特别指向任何东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.