重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用指针,另外保存数据的变量退出函数时不得消失。
在斗门等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、做网站 网站设计制作按需求定制开发,公司网站建设,企业网站建设,高端网站设计,成都全网营销推广,外贸网站制作,斗门网站建设费用合理。
例如:
#includestdio.h
int * fun(int n)
{
int i;
static int a[100]; // 这里用static
for (i=0;in;i++) a[i]=i;
return a[0];
}
void main()
{
int i,n=5;
int *p; // 声明指针
p = fun(n); // 返回指针
for (i=0;in;i++) printf("%d\n",p[i]); // 把 p 看成数组来输出
}
得 0 1 2 3 4
扩展资料:
注意事项
1、数组的维度必须是一个常量表达式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表达式
int arr1[i];//正确
int arr2[j];//错误
system("pause");
return 0;
}
2、默认情况下,数组的元素被默认初始化。
而且需要注意的是,和内置类型的变量一样,如果在函数内部定义了某种内置类型的数组,那么默认初始化会令数组有未定义的值。
4L217很强大。局部变量返回后已经销毁了,你这个返回的指针是在野的。
3Lflying说的没错,一般不能返回数组,但你可以把一个数组当参数传进去,然后修改它。或者,用我们强大的malloc();在函数内部分配一块空间,然后返回给调用者,但用这种方法就要写另一个对应的销毁函数,不然就有内存泄漏了。
int *get_memory(int len)
{
int *p = (int*)malloc(len*sizeof(int));
//清0,或者你用其它方法初始化
memset(p, 0, len*sizeof(int));
return p;
}
void free_memory(int *p)
{
free(p);
}
int main()
{
int *a;
a = get_memory(10);//返回一个10个元素的数组
//编写使用a的代码
free_memory(a);
return 0;
}
一般是需要主函数提供保存数据的数组,在参数中给出数组起始地址,然后子函数在其中填充,比如要准会的整数是56
void fun(int *a,int b) { ... }
void main() { int a[20];
fun(a,56);
}
char a[100];
/*
数组a为自动分配内存,即分配栈空间,程序运行脱离这个函数时,会有清栈
操作,所以a无法返回;
若要返回数组,需分配堆空间:
char *a = (char*) malloc(sizeof(char) * 100);
并且store函数返回值应为char*;
使用完毕后在函数外还需清除内存:
char *aa = store(..);
...
free(aa);
*/