如何在返回 char * 的函数中返回指针?



我正在实现我自己的strrchr - 它搜索参数str指向的字符串中字符c(无符号字符(的最后一次出现。

例:

Input: f("abcabc" , "b")
Output: "bc"

该函数应返回字符 *。如何返回指向函数中 char 数组的指针?

#include <stdio.h>
#include <string.h>    
char* my_strrchr(char* param_1, char param_2)
{
int len = strlen(param_1);
char res ;
for(int i = len; i >= 0 ;i-- ){
if (param_1[i] == param_2){
res = param_1[i];
return  *(res);
//here i tried return (char) res, (char*) res; nothing works
}
}
return NULL;
}
int main(){
char *d = "abcabc";
char r = 'b';
my_strrchr(d, r);
return 0 ;
}

您正在尝试返回值,而不是指针。运算符*表示当指针不是指针时res指针获取值。你应该把它变成一个指针,然后返回:

char* my_strrchr(char* param_1, char param_2)
{
int len = strlen(param_1);
char *res ; //make it a pointer
for(int i = len; i >= 0 ;i-- ){
if (param_1[i] == param_2){
res = &param_1[i]; //store address of an element to a pointer
return  res; //return a pointer
}
}
return NULL;
}

你的变量 res 是char类型。要获取引用,请使用引用运算符 &(请参阅C中"引用"和"取消引用"的含义(:

return &res

但是,这将导致变量 res 的地址,而不是 param_1 数组中的地址。看看亚历克斯的答案以获得正确的参考地址:https://stackoverflow.com/a/61930295/6669161

相关内容

  • 没有找到相关文章

最新更新