摘要: 对于复杂的C函数声明,或者被typedef别名后的声明,很多人往往一头雾水。本文主要解析下C语言中声明过程所遵循的原则。声明 引用《C专家编程》的第三章内容,说明下声明的优先级规则:声明从它的名字开始读,然后按照优先级顺序依次读取。优先级从高到底依次为:括号包围的地方后缀操作符:括号()表示是一个函数方括号[]表示是一个数组前缀操作符:星号*表示类型是 指向....的指针若const/volatile关键字的后面紧跟类型说明符(int,float),那么其作用于类型,在其他情况下,作用于其左边紧邻的指针星号。不过,我觉得这个规则的不够通俗,看了《C++Annotation》中关于const的. 阅读全文
posted @ 2013-05-17 15:01 xield 阅读(315) 评论(0) 推荐(1) 编辑
摘要: 本文主要将两个部分,符号重载和运算优先级问题,这两个问题很常见,很繁琐。我猜绝大部分的人在学习时都选择性忽略该章节的内容。但是在面试时,却常常考这方面的东西,因为,“精通”之名。 C中,具备着符号重载,符号重载是体现在程序上下文语境中,不同符号表现出不同的含义。比如“*”,具备三个含义:声明指针,指针解引,乘号。 《C专家编程》总结了下所有的符号重载,用以理清C语言作用域规则:符号意义static函数内部:表示仅在首次调用声明该变量,在此后调用中保持传承函数定义:该函数仅在本文件中可见extern函数定义:表示全局可见(默认属性,extern可省略)变量声明:仅说明该变量在其他地方定义。voi 阅读全文
posted @ 2013-05-17 11:14 xield 阅读(528) 评论(2) 推荐(1) 编辑
摘要: 引言--- 一直以来,我以为能在简历上写上“精通C语言”, 可是,朋友都劝阻说,还是写“熟悉or掌握”吧,要不然,会被问得很死的。我算是没认清现实吧,去网上找了些题,看了看,大体脉络掌握还行,但是细节部分,就很差劲了。我想起了段誉和慕容复的故事:“段誉仅精通六脉神剑,却稳胜以彼之道还施彼身的慕容复”。 C 语言既然作为我"Hello World!" 的引路人, 我很想说,我很想,精通你。主要阅读材料: 《C专家编程》主要记录我还未掌握,或者掌握不精的内容。1, 合法的赋值形式, 类型的兼容问题来源:1 foo(const char** p){}2 main(int argc 阅读全文
posted @ 2013-05-17 01:37 xield 阅读(262) 评论(0) 推荐(0) 编辑