黑马程序员技术交流社区

标题: 返回函数的指针 [打印本页]

作者: 白羊爱芒果    时间: 2014-5-16 21:06
标题: 返回函数的指针
#include <stdio.h>
char *test();
int main ()
{
     char *name = test ();
     printf("name = %s \n",name);
     return 0;
}
char *test ()
{
     return "rose";
}
谁能解释一下
作者: ios风痕    时间: 2014-5-16 21:30
char *test()表示返回的是一个指向字符串类型的指针,*的运算优先级低于(),在调用test函数时,先算的test函数的值,然后返回该值的地址给调用他的函数,name最后得到的就是“rose”的地址,你知道name已经定义为指针变量了
作者: 傘が咲く    时间: 2014-5-16 21:38
这个不是返回函数的指针,其实 char * 可以理解为是字符串的表示形式
看我的代码可能清晰一点

  1. #include <stdio.h>

  2. // 给 char * 取一个别名 String
  3. typedef char * String;

  4. // 对test函数进行声明
  5. String test();


  6. int main ()
  7. {
  8.     // 定义一个字符指针 接收test函数返回值
  9.     char *name = test ();
  10.     printf("name = %s \n",name);
  11.     return 0;
  12. }


  13. // 其实 char * 是返回值类型
  14. String test ()
  15. {
  16.     return "rose";
  17. }
复制代码

希望对你有所帮助!

作者: forever决    时间: 2014-5-16 21:40
char *test()中test表示的是函数名,调用它以后能得到一个char型(指向字符型数据)的指针,即字符型数据的地址,故输出结果应是rose的地址,你看看是不是。
作者: forever决    时间: 2014-5-16 21:42
forever决 发表于 2014-5-16 21:40
char *test()中test表示的是函数名,调用它以后能得到一个char型(指向字符型数据)的指针,即字符型数据的地 ...

应该是char *型的指针
作者: 奇迹    时间: 2014-5-17 03:38
char* 表示返回的是一个字符串常量,就是这么简单,也就是返回一个指针而已,指针指向的内容是内存中的一块内存,而这块内存就是存放的你那个“ROSE“
作者: 白羊爱芒果    时间: 2014-5-17 12:16
傘が咲く 发表于 2014-5-16 21:38
这个不是返回函数的指针,其实 char * 可以理解为是字符串的表示形式
看我的代码可能清晰一点

写的真好,谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2