这个问题试图收集社区维护的关于c编程语言的优质书籍清单,目标是各种技能水平.
C是一种复杂的编程语言,通过阅读在线教程很难在旅途中学习.综合性书籍通常是学习语言的最佳方式,找到一本好书是第一步.重要的是要避免写得不好的书籍,更重要的是要避免包含严重技术错误的书籍.
请建议编辑接受的答案,以添加高质量的书籍,具有近似的技能水平和每本书的简短描述/描述.(请注意,问题已被锁定,因此不会接受新的答案.列表中会保留一个答案)
随意讨论书籍选择,质量,标题,摘要,技能水平以及您认为错误的任何其他内容.C社区认为令人满意的书籍将列在名单上; 其余的将定期删除.
对于由C和C++用户协会(ACCU)进行评论的书籍,应该与书籍一起添加指向这些评论的链接.
也可以看看:
这个问题在Meta上作为2018年删除问题审计的一部分进行了讨论.
达成共识的目的是保持其未被删除和积极维护.
可能重复:
内存分配char*和char []
任何人都可以解释我这些代码行之间的区别
char *p = "String";
char p2[] = "String";
char p3[7] = "String";
Run Code Online (Sandbox Code Playgroud)
我应该在什么情况下使用以上各项?
我期待以下两个向量在RAM中具有相同的表示:
char a_var[] = "XXX\x00";
char *p_var = "XXX";
Run Code Online (Sandbox Code Playgroud)
但奇怪的是,f(char argument[])如果我调用它,对类型库函数的调用会破坏正在运行的应用程序f(p_var).但使用还f(a_var)可以!
为什么?
可能重复:
char*str ="STRING"和char str [] ="STRING"之间的区别?
需要一些C编程方面的帮助
而这个剪辑会导致分段错误
int main(void) {
char* str ="abcde";
str[strlen(str)-1] ='\0';
printf("%s",str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我把char str [] ="abcde";指针放在
完美的指针上,你知道为什么会这样吗?