*在函数声明中的作用是什么

这句话加不加*对调用时的影响是什么


char* max(char *a,char *b){
    return strcmp(a,b)>=0?a:b;
}

char max(char a,char b){
    return strcmp(a,b)>=0?a:b;
}

加星意味着你返回的对象是一个指针
如果你要比较的对象是字符串,那输入的是字符串的指针,返回的也是指针
而如果不加星,你输入输出都是char,char是要直接比较大小的,不能作为strcmp的参数
而且函数功能也从比较两个字符串大小变成比较两个char的大小,功能都变了

在 C++ 中,加号号和不加星号的影响是在调用函数时的参数传递方式的不同。

  • 在第一个函数(char* max(char *a,char *b))中,星号表示函数的返回类型是字符指针,这意味着函数会返回一个指向字符数组的指针。
  • 在第二个函数(char max(char a,char b))中,不加星号表示函数的返回类型是字符,这意味着函数会返回一个字符。

在调用函数时,如果函数的返回类型是指针,则调用时必须加上星号。例如,在第一个函数中,如果要调用函数并将返回值赋值给一个字符指针变量,可以使用如下代码:

char* result = max("hello", "world");

如果函数的返回类型是字符,则调用时可以不加星号。例如,在第二个函数中,如果要调用函数并将返回值赋值给一个字符变量,可以使用如下代码:

char result = max('h', 'w');

*在C/C++中表示指针变量
指针变量存储的是地址
定义:int *a;

int b = 10;
int *a = &b;

这里的&b表示变量b的地址

int b = 10;
int *a = &b;
cout << *a << endl;

这里cout里的*a表示变量b的值10

char* max(char *a,char b)里的必须加,不然就从比较字符串大小变成比较字符大小了