回答个问题不要搞的越来越复杂,下面给个简单的例子,从子函数中将数组传出。图一是利用全局变量传递,图二是利用静态数组来传递。
创新互联建站主要从事网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务大洼,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
首先这样的作法是没有意义的,因为当函数返回之后,函数原始空间中的数组和变量是临时的,都会被自动清除和释放。如果需要通过函数将改变的结果传回,可以使用指针。 void shuru(int* p,int a[]){ *p = 123; int b[10]={1,2,3,4,5,4,6,7}; for (int i=0;i9;i++) a[i]=b[i] } void main(){ int b, a[10] ; shuru(b,a); printf("%d",b); for(int i=0;i10;i++){ printf("%d",a[i]); } }
如果是非静态的局部变量,那第二次调用时,数组会被 ”清空“。
子函数中,声明的非静态局部变量、数组,使用的是函数栈空间。
在每次调用函数时,都会新分配一块儿栈空间给函数使用。
因此相当于每次调用子函数,子函数内的局部变量都会被初始化~
接楼上
所以,你的子函数定义应该是整形的,不能使双精度型的!因为你要返回的是数组的地址!
数组作为子函数形参的时候,是被当做指针处理的,也就是说
你这样写一个子函数
int a(int a[]) ;
等价于
int a(int *a) (其实编译器是这么处理的)你可以看汇编代码!