C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式:
函数形参带进来的地址
静态局部变量地址
局部变量地址,必须在函数中用malloc()函数进行地址分配
采用全局变量地址
参考代码:
void func1( char *s ) //通过形参返回字符串
{
strcpy( s, "hello")
}
char * func1_1( char *s ) //另一种写法
{
strcpy( s, "hello")
return s //返回形参地址,方便程序调用
}
char * func2( void )
{
static char s[100]//不能是非静态变量,否则,子函数结束,局部变量被释放,调用者得到一个无效的地址值。
strcpy( s, "hello")
return s //返回静态局部变量地址,由调用者采用相应的指针变量接收返回值,得到字符串数据。
}
char * func3( void )
{
char *s
s=(char *)malloc( 100 )
strcpy( s, "hello")
return s //返回s值,该地址需要调用者去free()释放。
}
//定义全局变量
char globle_buf[100]
void func4( void )
{
strcpy( globle_buf, "hello")
}
char * func4_1( char *s ) //另一种写法
{
strcpy( globle_buf, "hello")
return globle_buf //返回全局变量地址,方便程序调用
}
C语言实现返回一个字符串数组,是没有这种功能的,但是可以用指向数组的指针来实现:
解释:
char **p 这个p就是指向数组的指针,它指向一个数组的起始地址.
想要引用里面的数组时,直接使用p[i] 即可。
我们知道C语言里面的各种数组,本质上都是指针,并且函数其实也是不能把数组当作参数的,实际上都是把数组的地址传进去了,实际上就是指向数组地址的指针。
实现
这样返回的P就是指向数组的指针了,实际上就是一个字符串数组
函数解释:
函数返回一个字符串数组,实际上就是指向数组的指针,传进去的是返回的数组的大小以及一个字符串数组,用来处理数据用。