C语言如何返回字符串数组?

学到C语言函数时,突然萌生一种想法在子函数里面输入一个数组返回到main函数里面
刚开始代码是这样写的

#include"stdio.h"
char character(void);
int main(void)
{
	char temp[20];
	printf("Starting !\n");
	printf("%s",character());
	return 0;
 }
 /*
  *定义一个返回值为char类型且无参数传入的子函数
  *定义一个长度为20的数组用来存放字符串
  *return返回数组的地址
  */
char character(void)
{
	char s[20];
	scanf("%s",&s);
	return s;
}

刚开始觉得没问题,当编译后报错如下:
在这里插入图片描述
百度翻译
[Warning] return makes integer from pointer without a cast
[警告]return从指针生成整数,不带强制转换
[Warning] function returns address of local variable
[警告]函数返回局部变量的地址
运行直接GG
在这里插入图片描述
之后百度得知
**C语言返回值不支持返回数组,不过可以通过返回指针类型,用以替代数组。在C语言中,数组大多数时候是可以用指针替代的。**不过需要注意的是,不能够返回在函数内部定义的局部变量数组,因为一旦函数退出,局部变量就会被释放,导致数组指针无效。

可以返回以下几种:

  1. 全局变量,或者全局变量空间内的一个地址。
  2. 静态局部变量,或者静态局部变量内部的一个地址。
  3. 从参数传入的数组/指针变量,或者在其上做的合法偏移。
  4. 在数组内部动态申请的空间首地址。

百度知道地址

https://zhidao.baidu.com/question/489607384.html

#include"stdio.h"
char *character(char str[]);
int main(void)
{
	char temp[20];
	printf("Starting !\n");
	printf("%s",character(temp));
	return 0;
 }
  /*
  *定义一个返回值为char类型的指针且传入主函数数组地址的子函数
  *return返回char类型的指针(数组的地址)
  */
char *character(char str[])
{
	scanf("%s",str);
	return str;
}

将子函数改为返回char指针后,程序正常输出!
在这里插入图片描述

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值