用C语言如何使函数返回值为指向一维数组的指针?

如果想在主函数中输出自定义函数中定义的数组,怎么实现?是不是要在自定义函数中把数组定义为静态存储?使函数返回值为指向指针的指针又如何实现?谢谢高手!!... 如果想在主函数中输出自定义函数中定义的数组,怎么实现?是不是要在自定义函数中把数组定义为静态存储?使函数返回值为指向指针的指针又如何实现?谢谢高手!! 展开
 我来答
kaixingui2012
推荐于2018-02-28 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6133万
展开全部

  子函数中定义的一般指针变量,在子函数结束之后会被自动释放,如果返回这种局部指针变量,调用者一般是不能正确读到指针地址中的数据的。

  因此,如果想在主函数中输出自定义函数中定义的数组,就要在自定义函数中把数组定义为静态数组,然后返回数组名即可。

  静态变量的生命周期是整个程序的生命期,从定义开始,直到程序结束,才会被释放。

参考代码:

#include <stdio.h>
char *get_str(void) //返回值类型为字符指针
{
    static char str[100]={0};//静态变量初始化,只有在定义时这次完成,且初始化只执行一次。
    sprintf(str,"hello world");
    return str ;
}
void main()
{
    char *p;
    p=get_str();
    printf("%s\n", p );
}
mlper_
2015-09-09 · TA获得超过8016个赞
知道大有可为答主
回答量:4863
采纳率:78%
帮助的人:1168万
展开全部
  1. 函数的返回值由函数的定义决定

  2. 要使函数返回一个指针,那么在函数定义时应规定返回值为指针,这样可使函数返回一个指针

  3. 要是函数返回的指针为指向一维数组,那么在函数运行过程中应使指针指向数组,这样在返回时就可以让函数返回一个指向一维数组的指针,但还需注意这个一维数组的内存在函数运行完后是否释放这一问题

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b1b2aecb0
推荐于2018-03-05 · 超过12用户采纳过TA的回答
知道答主
回答量:58
采纳率:100%
帮助的人:22.6万
展开全部
int* pi()
{
static int a[] = {1};
int* p = a;
return p;
}
指向指针的指针 不还是一个指针吗,指针是怎么返回的就怎么返回
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
niluanxy
2012-05-13 · 超过26用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:72.4万
展开全部
数组传递的时候一般都是直接传递数组的首地址,所以,你直接返回数组的首地址就可以了。比如下面的代码:

int a[5];
......
return a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友762606a
2018-03-05
知道答主
回答量:2
采纳率:0%
帮助的人:1471
展开全部
int (*func())[3] //fun是一个函数,函数返回一个指针,指针指向一个数组,这个数组有三个int型的整数。需要在子函数中使用malloc函数给这个指针分配内存。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式