随笔分类 - 为何不精通C?
摘要:C语言博大精深。把 K&R 经典的TCPL看了好几遍,每次看都有新的收获。 手册就短短百来页,就把C的精髓都阐述的通透。但是,C语言是一门怎么学都学不够的语言,看了其他一些关于C的大牛书,感觉《C专家编程》非常好,我很喜欢,感觉正好是对我知识点的一个补充。因此,查缺补漏,我把《C专家编程》作为C方面的温故书籍。 当然,现在我的C水平有限,博客某些内容回到以后对这块有更好的认识了,再更新。 博客计划如下:一些零碎的易混淆知识 (持续更新)符号重载、优先级、结合性分析深入剖析声明一维数组和指针的辨析多维数组和指针链接的思考运行时数据结构对内存的思考
阅读全文
摘要:前言 学习C语言,指针绝对是一道大坎,很多人谈指针色变,使用起来小心翼翼的。“一切指针都是纸老虎” ,同时,对我们得“在战略上藐视指针,战术上重视指针”。本文先剖析下一维数组和指针,多维的情况后序博客继续更新。文章流程:1、辨析指针和数组的不同2、辨析它们相同的时刻3、总结指针和数组为什么这么纠缠不清 首先说一点,指针的使用等同于数组的情况远远多于他们不同的情况,因此,在初学时,为了容易理解,很多人都说 “指针=数组”。 但是,这却是错误的!来个例子吧:// file1.c 定义一个数组arrayint array[100];以上是在文件1中的定义// file2.c 声明file1.c中的a
阅读全文
摘要:对于复杂的C函数声明,或者被typedef别名后的声明,很多人往往一头雾水。本文主要解析下C语言中声明过程所遵循的原则。声明 引用《C专家编程》的第三章内容,说明下声明的优先级规则:声明从它的名字开始读,然后按照优先级顺序依次读取。优先级从高到底依次为:括号包围的地方后缀操作符:括号()表示是一个函数方括号[]表示是一个数组前缀操作符:星号*表示类型是 指向....的指针若const/volatile关键字的后面紧跟类型说明符(int,float),那么其作用于类型,在其他情况下,作用于其左边紧邻的指针星号。不过,我觉得这个规则的不够通俗,看了《C++Annotation》中关于const的.
阅读全文
摘要:本文主要将两个部分,符号重载和运算优先级问题,这两个问题很常见,很繁琐。我猜绝大部分的人在学习时都选择性忽略该章节的内容。但是在面试时,却常常考这方面的东西,因为,“精通”之名。 C中,具备着符号重载,符号重载是体现在程序上下文语境中,不同符号表现出不同的含义。比如“*”,具备三个含义:声明指针,指针解引,乘号。 《C专家编程》总结了下所有的符号重载,用以理清C语言作用域规则:符号意义static函数内部:表示仅在首次调用声明该变量,在此后调用中保持传承函数定义:该函数仅在本文件中可见extern函数定义:表示全局可见(默认属性,extern可省略)变量声明:仅说明该变量在其他地方定义。voi
阅读全文
摘要:引言--- 一直以来,我以为能在简历上写上“精通C语言”, 可是,朋友都劝阻说,还是写“熟悉or掌握”吧,要不然,会被问得很死的。我算是没认清现实吧,去网上找了些题,看了看,大体脉络掌握还行,但是细节部分,就很差劲了。我想起了段誉和慕容复的故事:“段誉仅精通六脉神剑,却稳胜以彼之道还施彼身的慕容复”。 C 语言既然作为我"Hello World!" 的引路人, 我很想说,我很想,精通你。主要阅读材料: 《C专家编程》主要记录我还未掌握,或者掌握不精的内容。1, 合法的赋值形式, 类型的兼容问题来源:1 foo(const char** p){}2 main(int argc
阅读全文

浙公网安备 33010602011771号