【发布时间】:2012-12-03 14:01:15
【问题描述】:
#include <stdio.h>
int main(){
char array[2];
array[0] = 'q';
array[1] = 'a';
printf("%s",array);
return 0;
}
如果你问我这段代码不应该工作。 printf 像字符串一样打印 array[2] 但它不是字符串。当我执行它时,它工作得很好。你能解释一下为什么吗?
【问题讨论】:
-
嗯...你认为“字符串”在 C 中是如何表示的?
-
它不起作用。如果代码符合您的预期,则代码“有效”。此代码不符合您的预期。它有一个错误,因此不起作用。修复错误,谜团就会消失。是的,有缺陷的代码会做一些你意想不到并且难以理解的奇怪事情。这是不编写错误代码的一个很好的理由。 (有缺陷的代码比好的代码更难理解。在您相当彻底地理解有效代码之前,我不建议您尝试理解有缺陷的代码。)
-
你真的应该投资一本关于 C 的初学者书籍。如果不了解基础知识,就会有很多没有意义的东西......
标签: c