【发布时间】:2019-09-09 14:16:45
【问题描述】:
我有以下代码:
#include <stdio.h>
int main(){
char *p = "abc";
char c = *p;
printf(&c);
return 0;
}
跑步,我明白了
[OP@localhost test]$ gcc ptr.c
[OP@localhost test]$ ./a.out
a%QV[OP@localhost test]$
我期待它只打印“abc”。为什么会这样?
【问题讨论】:
-
c是单个字符(仅包含'a'),因此&c不会是一个以 null 结尾的字符串。 -
c的地址(由&c确定)与"abc"的地址(即存储在p中的指针)不同。 -
@lurker 太好了,这就是我的问题的答案。