鹿晗的头发是什么颜色:C语言 自定义函数返回数组的问题
来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 15:37:59
C语言 自定义函数返回数组的问题
5[ 标签:c语言,自定义函数 ]#include
char* text( void );
int main( void )
{
char* str = NULL;
str = text();
puts(str);
getchar();
}
char* text( void )
{
char p[] = "Hello, world!";
return p;
}
对于上述代码,为何无法输出“Hello, world!”?为何当把其中的p[]改为*p后就可以输出“Hello, world!”了?
这里涉及到函数返回值、临时变量、局部自动变量、内存的问题,希望你能在答案中解释一下。
我从网上找过许多类似的问题,但是仍然似懂非懂,所以希望你能用自己的话回答。
问题补充 2010-05-08 13:10
我定义数组charp[] = "Hello, world!";
那么此时的p(不带下标)也是一个指针,为什么无法将它的值返回给主调函数呢?
Who?R'U 回答:1 人气:1 解决时间:2010-05-14 12:43满意答案
好评率:0%char p[] = "Hello, world!";
是表示定义一个 字符串数组,而且是text( void )函数内的局部变量,
作用域只在text( void )函数内部,离开函数就无效了
char *p = "Hello, world!";
是表示定义了一个 字符串常量,作用域是全局的,
指针 p 则指向这个常量 "Hello, world!",所以可以返回 p
回答人的补充 2010-05-08 13:55因为字符串数组 charp[] = "Hello, world!"; 是一个是text( void )函数内的局部变量,
作用域只在text( void )函数内部,离开函数就无效了
你可以返回指针 p,
但p所指向的 "Hello, world!"字符串 是不能在外部访问的,
它是程序栈上的数据,但你可以用 malloc 等函数分配出来的则可以返回