【发布时间】:2017-07-17 13:26:18
【问题描述】:
假设我们有以下代码示例:
char *s="hello";
if(*s=='h'){
printf("OK");
}
程序将显示'OK',因为比较为真。
但是,此代码背后的逻辑是字符和地址之间的比较(而不是地址的内容)。
知道*s 相当于一个地址,怎么可能让这个条件为真?
谢谢
【问题讨论】:
-
*s不是地址。您正在取消引用s的地址。 -
*s是一个字符。s(没有*)是一个地址。获取一些 C 书籍并阅读处理指针的章节。 -
为什么你认为“
*s相当于一个地址”?它不是。正确的是s相当于一个地址,*s是位于该地址的对象。 (但最好说s是一个指针,*s是该指针指向的对象。)
标签: c pointers comparison character