c - strcmp 如何在没有 * 运算符的情况下比较地址处的值?

标签 c pointers

即使没有 * 运算符,strcmp 是否也会检查地址处的值?如果是,我们如何使用 strcmp 比较普通字符串?

#include <stdio.h>
#include <string.h>

int main()
{
    char *name;
    char *str;
    char a[] = "Max", b[] = "Max";
    name = a; str = b;
    printf("Add 1: %p Add 2: %p\n", name, str);
    if (!strcmp(*name, *str))
        printf("Names Match\n");

    return 0;
}

如果我使用 * 运算符比较地址处的值,则无法获得所需的输出。但是,如果我删除 * 运算符,它就可以正常工作。

最佳答案

文档是你的 friend

http://www.cplusplus.com/reference/cstring/strcmp/

int strcmp ( const char * str1, const char * str2 ); 
str1 - C string to be compared. 
str2 - C string to be compared.

你有

char *name;
char *str;

所以

strcmp(name, str)

完全有效 - 您将指针传递给函数 - 而不是取消引用的字符串。

关于c - strcmp 如何在没有 * 运算符的情况下比较地址处的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42178498/

相关文章:

c - 这些人物是如何产生的呢?

c - 将 2 个字符串指针与参数为 void ** 的函数交换

c - snprintf 的输出是否保证在 Visual Studio 2015 中以 null 终止?

c - 嵌套结构数组的 sizeof()

c - 函数指针类型

c++ - 指向非 volatile 数据的 volatile 指针

c - 另一个 C 指针问题

c - C中什么情况下可以使用long int

c - 关于memmove的实现

c++ - 如何为表达式解析器的派生类对象设置和取消引用通用指针?