C 两个字符指针的比较

C 两个字符指针的比较,c,C,我试图比较两个常量字符*代码如下所示 void compare(const char *name){ const char *name1; if(!strcmp(*name,*name1){ printf("true"); } } 错误是:从“char”到“const char*”的转换无效 我需要帮助 if(!strcmp(name,name1)) -变量名称和名称1已经是指

我试图比较两个常量字符*代码如下所示

void compare(const char *name){
             const char *name1;

             if(!strcmp(*name,*name1){
                  printf("true");
             }
}
错误是:从“char”到“const char*”的转换无效 我需要帮助

if(!strcmp(name,name1))
-变量名称和名称1已经是指针


然而,单凭这一点并不能神奇地使其发挥作用。为什么要与name1的未初始化值进行比较?

strcmp的参数应该是指向char的指针,而不是char的指针,因此不要遵从您已有的指针:

  if (!strcmp(name,name1)) { 

您已经在使用指针了,因为char*实际上是char指针。你只需要把*拿出来。但请注意strcmp比较的是字符串,而不是字符或指针。我不知道您想做什么,但如果您想比较它们是否是同一对象,请执行以下操作:

if (name1 == name2) ...
但是,如果要比较它们的内容,则需要取消对它们的引用:

if (*name1 == *name2) ...
如果它们是字符串,则只需使用:

if (strcmp(name1, name2) == 0) ...

希望这有帮助

在strcmp之后增加一秒钟。数一数你的括号!非常感谢name1是结构中的const char*:-再次感谢。您说name和name1已经是指针,这可能意味着*给出了一个指向变量的指针,而它没有提供地址。在这方面,乔尼的答案可能更清楚。