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

Python018

C语言中函数如何返回字符串?,第1张

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就是指向数组的指针了,实际上就是一个字符串数组

函数解释:

函数返回一个字符串数组,实际上就是指向数组的指针,传进去的是返回的数组的大小以及一个字符串数组,用来处理数据用。