如何 return 函数中的指针 returning char *?
how to return a pointer in a function returning char *?
我正在实现自己的 strrchr - 它在参数 str 指向的字符串中搜索字符 c(无符号字符)的最后一次出现。
示例:
Input: f("abcabc" , "b")
Output: "bc"
函数应该return char *。我如何 return 指向函数中 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 ;
}
您正在尝试 return 值,而不是指针。运算符 *
表示通过指针获取值,而 res
不是指针。你应该使它成为一个指针然后 return:
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 = ¶m_1[i]; //store address of an element to a pointer
return res; //return a pointer
}
}
return NULL;
}
您的变量 res 是 char 类型。要获取引用,请使用引用运算符 &(请参阅 Meaning of "referencing" and "dereferencing" in C):
return &res
但是 这将导致变量 res 的地址而不是 param_1 数组中的地址。查看 Alex 的回答以获得正确的参考地址:
我正在实现自己的 strrchr - 它在参数 str 指向的字符串中搜索字符 c(无符号字符)的最后一次出现。
示例:
Input: f("abcabc" , "b")
Output: "bc"
函数应该return char *。我如何 return 指向函数中 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 ;
}
您正在尝试 return 值,而不是指针。运算符 *
表示通过指针获取值,而 res
不是指针。你应该使它成为一个指针然后 return:
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 = ¶m_1[i]; //store address of an element to a pointer
return res; //return a pointer
}
}
return NULL;
}
您的变量 res 是 char 类型。要获取引用,请使用引用运算符 &(请参阅 Meaning of "referencing" and "dereferencing" in C):
return &res
但是 这将导致变量 res 的地址而不是 param_1 数组中的地址。查看 Alex 的回答以获得正确的参考地址: