C语言函数返回数组,有个知道上的回答是错的

C语言函数返回一个数组,之前有人写过有两种方法,指针&结构化,但试了试在DEV上都有错误,修改了一下,可以运行了:

1. 结构化

typedef struct 


    int a[10]; 
}RET;

RET retArray() 

     RET x; 
    int i=0; 
    for(i=0;i<10;i++) 
         x.a[i]=i; 
    return x; 
}

int main() 

  
     RET y=retArray(); //这里不能是int b[10];b=retArray().a; int* to int*[10],这个转化不对
for(int i=0;i<10;i++)  
     {
printf("%d\n",y.a[i]);   
}
    return 0; 

}


2.指针,问题也是出在转化,还有分配空间那个malloc它没有说(int*),不过这个解决了也不能用

int *retArray(int a[],int n)
{    for(int i=0;i<n;i++) 
     {a[i]=i;}
     return a; 
}
int main() 

    int *retArray(int a[],int n); 
int *b;
b=retArray(b,10);// 这里必须要给个空数组b在里面,有个百度知道的问答,里面还定义了一个c[],但其实c[]没有必要,一个就够了
for(int i=0;i<10;i++)  
     {
printf("%d\n",b[i]); 
}
    return 0; 
}


就是这些,代码源于网络,但讲的是改正了的代码,HALF转载HALF原创?C很容易出bug,还是对语言了解的不深入,注意细节吧。第一篇博文,从基础开始捡起C语言。

救苦救难红菩萨,有谁看过欢乐英雄吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值