当前位置:首页 » 编程语言 » c语言返回指针数组

c语言返回指针数组

发布时间: 2022-06-13 05:03:32

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开空间后再赋给这个数组,这样也不会被释放了;第一种方法有缺点,以后学到全局变量的时候会知道,第二种方法估计你还没学到,不过很简单,网络一下就会了~~~

热点内容
小米ftp服务器地址 发布:2025-04-06 10:29:37 浏览:387
java在线编译器源码 发布:2025-04-06 10:29:23 浏览:451
如何更新androidstudio 发布:2025-04-06 10:22:09 浏览:653
三星手机取消加密 发布:2025-04-06 10:21:19 浏览:268
ubuntutouch编译 发布:2025-04-06 10:21:18 浏览:388
编程实话 发布:2025-04-06 10:20:31 浏览:982
超滤膜清洗剂怎么配置 发布:2025-04-06 10:13:11 浏览:976
存储过程什么时候用 发布:2025-04-06 10:12:17 浏览:38
混合型编程和 发布:2025-04-06 09:47:08 浏览:601
uc看缓存的视频 发布:2025-04-06 09:30:32 浏览:561