我正在通过“Learn C”书阅读,并且遇到了一个我真不明白的问题。在练习的要点是找到这段代码的问题:基本C指针问题
char c;
c = 'a';
printf("c holds the character %c.",c);
..和那么它给出的解释是:“文本字符串‘a’是由两个字符,这两个‘A’和终止零字节变量c只有一个字节的大小,即使c是2字节长,也不能以这种方式拷贝一个文本字符串,尝试一次拷贝一个字节的文本到足够大的变量中该文本字符串及其终止的零字节。“
但是,当我运行上面的代码 - 它工作得很好。我想我明白为什么的背后它是坏的理论 - 将整体在一串东西年底终止0,所以我改写这样的代码进行测试:
char c[2];
*c = 'a';
printf("c holds the character %c.",c);
但是,这产生一个问题。我开始对这个问题感到困惑。这第二组代码是不是将字母'a'传递给c [0]处的指针,然后将终止0置于c [1] - 完全使用分配给该数组的2个空格?
我不假设在第二行有一个双引号? (c =“a”;)这将无法编译...因为单引号是一个字符,而任何用双引号是一个字符串(所以以null结尾) – Rudu 2010-08-31 21:16:05
你的第一个例子是100%正确的,没有问题用它。你确定你把它正确地复制了吗? – 2010-08-31 21:16:23
谢谢你们,你是对的 - 书中的例子有双引号。但他们没有提到答案中指出的一点,即双引号是空字符结束的,单引号只是一个字符。谢谢。 – startuprob 2010-08-31 21:28:04