C语言 | 每日基础

Posted C语言入门到精通

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 | 每日基础相关的知识,希望对你有一定的参考价值。




古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:怎样建立和理解非常复杂的声明?例如定义一个包含 N 个指向返回 指向字符的指针的函数的指针的数组?


小林:问题至少有以下 3 种答案:

1. char *(*(*a[N])())();


2. 用 typedef 逐步完成声明


3. 使用 cdecl 程序, 它可以把英文翻译成 C 或者把 C 翻译成英文, 通过类型转换, cdecl 也可以用于解释复杂的声明, 指出参数应该进入哪一对括号。


一本好的 C语言书都会解释如何 “从内到外” 解释和理解这样复杂的 C 语言声明 (“模拟声明使用”)。上文的例子中的函数指针声明还没有包括参数类型信息。如果参数有复杂类 型, 声明就会变得真正的混乱了。现代的 cdecl 版本可以提供帮助。 


读者:函数只定义了一次, 调用了一次, 为什么编译器提示非法重定义?


小林:在范围内没有声明就调用的函数被认 为返回整型 (int), 如果函数在后边声明或定义成其它 类型就会导致矛盾。所有函数 (非整型函数一定要) 必须在调用之前声明。另一个可能的原因是该函数与某个头文件中声明的另一个函数同名。























有时候,正是那些意想不到之人,成就了无人能成之事。
——图灵


小编二维码

长按/加好友

-  END -


____

______

________

____

______

________

以上是关于C语言 | 每日基础的主要内容,如果未能解决你的问题,请参考以下文章

C语言 | 每日基础

C语言 | 每日基础(61)

C语言 | 每日基础

C语言 | 每日基础

C语言 | 每日基础(31)

C语言 | 每日基础(23)