黑马程序员技术交流社区
标题:
返回指针的函数问题?
[打印本页]
作者:
远人
时间:
2014-4-1 09:31
标题:
返回指针的函数问题?
本帖最后由 远人 于 2014-4-4 13:16 编辑
下面是返回指针的函数,有个问题不太明白,想求证,先看代码:
#include <stdio.h>
char *test();
int main(int argc, const char * argv[])
{
char *name = test();
printf("name = %s\n",name);
// printf("name = %s\n",*name);
return 0;
}
char *test()
{
return "rose";
}
复制代码
如我注释的那行,Xcode报错,程序崩溃,我想问:从这个能否看出,这里的的name代表的是函数test()的地址,然后我修改成*name就是错误的;根据经验,在printf函数中,输入的求解参数,是不是输入就是地址?
呵呵,可能问的有点含糊!
作者:
沙洲冷
时间:
2014-4-1 10:11
name 代表函数返回的字符串"rose"的首地址,你要输出该字符串,所以在printf函数中必须用name。
作者:
conpgy
时间:
2014-4-1 11:16
test函数返回rose字符串。然后将rose赋值给name。name就指向字符串rose,存储的是rose的首地址。怎么会是函数test的地址?*name是字符串的第一个字符,即n。因为它是char型,与%s不匹配,故是错误的。
作者:
agelessman
时间:
2014-4-1 12:13
pfintf就是按地址顺序输出的,name相当于一个字符串数组,
前边加了个*就是取出地址了 %s就不对了
作者:
程浩
时间:
2014-4-1 18:18
char *name = test();//name此时虽然是指针类型char * ,但由于test()返回的是地址,*地址就相当于取值了,所以name此时已经是字符串rose,可以直接输出。
printf("name = %s\n",name);
// printf("name = %s\n",*name);
return 0;
}
char *test(){}//test()返回的是char* 类型,即地址
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2