c++指针型函数小疑点,请大家看看!

c++指针型函数小问题,请大家看看!!!问题描述:指针型函数使用时其返回值为一指针,那么在具体使用指针型函数

c++指针型函数小问题,请大家看看!!!
问题描述:指针型函数使用时其返回值为一指针,那么在具体使用指针型函数时还用不用带函数前面的 "* ",如char   *max(char   *a,char   *b)
                                          {return(strcmp(a,b)?a:b);}    
那么:在
          int   main()
{cout < <*max( "hello ", "good ") < <endl;
  return   0;}
    中还用不用 "* ".我在编译过程中当不加“*”时运行的结果是hello;当加“*”时运行结果是h.并且随着第一个实参的改变运行结果不一样,如:当是ello时,运行结果为e;
我感觉很奇怪,按我的理解返回值是一指针,那么返回时输出的应该为一地址,但这里的两种结果都和我想的不一样。我想问一下我的想法为什么不对。为什么会出现两种不同的运行结果。那么在实际的使用中,即在指针型函数的使用过程中应不应该加“*”。谢谢!!

[解决办法]
char *str = "hello ";
str是指针,指向 "hello "
*str是字符,为 'h ',可以把str看成字符数组,*str即取数组的第一个字符
[解决办法]
char *max(char *a,char *b)
{return(strcmp(a,b)?a:b);}

返回为 char *,
所以,
如果是你想输出 这个 char *,
那么 cout < <max( "hello ", "good ")
如果是输出这个 char * 中的第一个字符,可以是 cout < <*max( "hello ", "good ")
[解决办法]
char *max(char *a,char *b)
{return(strcmp(a,b)?a:b);}


在你这个函数中,返回值是一个char *,所以我现在不妨在主函数中定义一个指针来接收它,进行一个等价变换,楼主比较容易看懂.改成下面这样:

int main()
{
char *p;
p=max( "hello ", "good ");
cout < <p < <endl;
cout < <*p < <endl;
return 0;
}

我想楼主应该看得很清楚了为什么加*和不加*有区别.

第一句cout < <p < <endl这里的p是一个指针,指向hello和good的最大的字符串,所以cout < <p就是完全那个最大的字符串.

第二句cout < <*p < <endl这里p仍然是一个指针,但对它加了*,就相当于char *p= "hello ",cout < <*p一样,那么输出的当然是这个p指向的字符串的第一个字母了.

[解决办法]
既然是char*,你就拿他当数组看好了。好像没什么大碍。
[解决办法]
问题描述:指针型函数使用时其返回值为一指针,那么在具体使用指针型函数时还用不用带函数前面的 "* ",如char *max(char *a,char *b)
{return(strcmp(a,b)?a:b);}
那么:在
int main()
{cout < <*max( "hello ", "good ") < <endl;
//不能加,不加就是字符串
加了就是一个第一个字符

return 0;}