即使没有 *
运算符,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/