用C语言如何使函数返回值为指向一维数组的指针?
如果想在主函数中输出自定义函数中定义的数组,怎么实现?是不是要在自定义函数中把数组定义为静态存储?使函数返回值为指向指针的指针又如何实现?谢谢高手!!...
如果想在主函数中输出自定义函数中定义的数组,怎么实现?是不是要在自定义函数中把数组定义为静态存储?使函数返回值为指向指针的指针又如何实现?谢谢高手!!
展开
5个回答
展开全部
子函数中定义的一般指针变量,在子函数结束之后会被自动释放,如果返回这种局部指针变量,调用者一般是不能正确读到指针地址中的数据的。
因此,如果想在主函数中输出自定义函数中定义的数组,就要在自定义函数中把数组定义为静态数组,然后返回数组名即可。
静态变量的生命周期是整个程序的生命期,从定义开始,直到程序结束,才会被释放。
参考代码:
#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 );
}
展开全部
函数的返回值由函数的定义决定
要使函数返回一个指针,那么在函数定义时应规定返回值为指针,这样可使函数返回一个指针
要是函数返回的指针为指向一维数组,那么在函数运行过程中应使指针指向数组,这样在返回时就可以让函数返回一个指向一维数组的指针,但还需注意这个一维数组的内存在函数运行完后是否释放这一问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int* pi()
{
static int a[] = {1};
int* p = a;
return p;
}
指向指针的指针 不还是一个指针吗,指针是怎么返回的就怎么返回
{
static int a[] = {1};
int* p = a;
return p;
}
指向指针的指针 不还是一个指针吗,指针是怎么返回的就怎么返回
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组传递的时候一般都是直接传递数组的首地址,所以,你直接返回数组的首地址就可以了。比如下面的代码:
int a[5];
......
return a
int a[5];
......
return a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int (*func())[3] //fun是一个函数,函数返回一个指针,指针指向一个数组,这个数组有三个int型的整数。需要在子函数中使用malloc函数给这个指针分配内存。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询