先看测试用例:
#include <stdio.h>
int main(int argc, char *argv[])
{
char *s = "hello";
char *str = "hello";
printf("compare pointers: ");
s == str ? printf("y") : printf("n"); #(1)
printf("\ncompare arguments: ");
argv[1] == argv[2] ? printf("y") : printf("n"); #(2)
printf("\nuse strcmp :");
strcmp(&argv[1], &argv[2]) ? printf("y") : printf("n"); #(3)
return 0;
}
运行结果:
$ ./a.out tmp tmp
compare pointers: y
compare arguments: n
use strcmp :y
确切的来说是想解决一些关于C和内存知识的问题:
在代码中, (1)比较的两个字符串, s和str在内存中是不同的指向char的指针, 但是他们指向的内容实际上是同一处?
(2)中比较的内容结果是不相等, "=="号比较的是所给参数的内存地址吗?
(3)的输出结果为y, 所以strcmp比较的是指针所指向的内容?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.