c语言返回指针数组
⑴ c语言中,return语句怎么样返回一个数组
首先,C/C++只能返回数组的指针而不能返回整个数组。即使返回数组的指针,但如果函数中的数组是自动性质,那将是危险的。这是比较正宗的表述。如果确实需要从函数中返回自动性质的数组的全部元素值,有没有办法呢?有。由于C/C++是允许返回结构体的,可以定义一个结构体模板,把数组作为成员安排在其中,函数中临时声明结构体变量,操作其中的数组;完毕后返回结构体变量,在主调函数中用同类型的结构体变量接收就可间接实现“返回一个数组”。举例代码如下:
#include"stdio.h"
structA{
intm[30];//把数组m安排在结构体A中
};
structAfun(intn){
inti,j,k;
structAs;//在函数中声明自动型结构体变量s
for(i=0;i<n;s.m[i++]=i+1);//为结构体成员数组m赋值1~15
for(j=n-1,i=0;i<j;i++,j--)//倒序这个数组
k=s.m[i],s.m[i]=s.m[j],s.m[j]=k;
returns;//返回结构体变量s
}
intmain(intargc,char*argv[]){
Aa;//主调函数中声明同类型结构体变量a接收函数fun的返回值
inti;
a=fun(15);//用15调用fun(不要大于30,只是举例),将结果赋于a
for(i=0;i<15;i++)//输出看看是不是倒序了...
printf("%d",a.m[i]);
printf(" ");
return0;
}
运行结果如下:
⑵ c语言中 如果想让一个函数返回数组指针,函数返回类型应该怎么定义
int(*fun())[10];
fun是一个返回数组指针int(*)[10]的函数
⑶ C语言用返回指针值的函数输出数组
因为input()函数创建的数组num[5]作用域在input()函数之内,当input()函数调用结束后,这段内存会被回收,也就是里面的值会变成其他数。修改办法是在堆区创建数组变量手动释放内存!
修改后:
⑷ C语言 通过指针从函数返回一个数组,编一道简单的程序解释
通过指针从函数返回一个数组
换句话说,返回的并不是数组,而是数组的首地址!
#include<stdio.h>
int*fun()//返回类型int*,与returna中的a的类型相同才可以!
{
staticinta[]={1,2,3};//静态变量,函数结束后,不会被系统回收
returna;//返回数组名,即数组首地址
}
intmain()
{
int*p=fun();//定义整型指针p接收返回地址
inti;
for(i=0;i<3;i++)//遍历返回的地址中的数据!
printf("%d",p[i]);
printf(" ");
return0;
}
⑸ C语言中,怎样定义函数可以让函数返回一个指针数组
返回它的地址不就行了么,指针数组的首地址就可以了
比如
有一个指针数组
char
*p[10]
=
{这里面放的都是指针},那么p的类型就是char
**类型
你定义一个函数,返回char
**类型就行了
比如
char
**fun()
{
char
**s;
return
s;
}
⑹ C语言,返回数组和指针
因为char p[]="abcdefg";这个字符串是放在栈上的 函数一退出 栈就释放了 char *p这样不是放在栈上 是放在静态储存区里 函数退出后 这段内存还一直存在。
⑺ C语言中怎样使用返回指针的函数来表示数组
不能访问x数组,因为array是局部变量,在调用完后array的空间会被销毁。如果你要用数组的空间,你可以传入一个数组变量,再把它返回。或者用malloc分配一个空间
⑻ c语言中怎样返回一个数组
在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。
在大多数情况下,一维数组和一维指针是可以通用的。
比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。 代码可以写成如下形式:
int*int_array_create(intn)//参数n为数组元素个数
{
int*r;
if(n<=0)returnNULL;//参数错误
r=(int*)malloc(sizeof(int)*n);//申请内存空间,大小为n个int长度。
returnr;//返回得到的整型数组的指针。
}
⑼ 求问c语言问题,调用函数中 如何做能让结果返回值为指针数组
C/C++里指针和数组用法是通用的,返回一个二级指针,然后按照指针数组的用法使用即可。
char
**
f1();
char**
p=f1();//接收函数返回值
printf
("%s",p[2]);//输出第三个成员的内容
⑽ c语言 函数返回数组指针
由于你在子函数int *shuzu(void)中定义的数组 a[4];属于局部变量,在子函数结束时会被释放,所以返回的指针变成野指针,会乱码;简单的解决方法有两种,1. 将数组定义在主函数之前(#include <stdio.h>下面),那么就变成了全局变量,不会被释放了;2.使用malloc或者calloc开空间后再赋给这个数组,这样也不会被释放了;第一种方法有缺点,以后学到全局变量的时候会知道,第二种方法估计你还没学到,不过很简单,网络一下就会了~~~