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

热点内容
o2o与数据库设计 发布:2025-02-07 11:35:27 浏览:926
ftp服务器推荐 发布:2025-02-07 11:35:16 浏览:698
吉利星瑞豪华加6000是有哪些配置 发布:2025-02-07 11:25:18 浏览:971
李字加工编程 发布:2025-02-07 11:23:50 浏览:880
linux安全运维 发布:2025-02-07 11:14:19 浏览:737
阿里云集群服务器 发布:2025-02-07 11:12:38 浏览:453
如何选择家庭最佳配置 发布:2025-02-07 11:06:50 浏览:89
javatomcat服务器搭建服务器 发布:2025-02-07 10:55:22 浏览:624
vcenter存储器集群 发布:2025-02-07 10:54:31 浏览:585
咖啡的脚本 发布:2025-02-07 10:46:18 浏览:523