关于C语言初始化字符数组的"冷玩法":其实并不冷

blogdaren 2022-03-04 抢沙发 153人次

问题背景:

在阅读PHP内核源码时,经常会碰见各种稀奇古怪的玩法【也可能是自己忽略了什么】,比如如下内核代码:

const char HARDCODED_INI[] =
    "html_errors=0\n"
    "register_argc_argv=1\n"
    "implicit_flush=1\n"
    "output_buffering=0\n"
    "max_execution_time=0\n"
    "max_input_time=-1\n\0";

代码细读:

首先是定义了一个数组,根据char可知数组里的每一个元素类型是char类型,但是多个引号的出现使得问题看上去似乎并不符合"字符串"初始化规则; 另整体上看其实就是初始化了一个长长的字符串。

玩法依据:

苦寻到理论依据:C语言规定:连续的用 " "  引起来的字符串会默认被合并为一个常量字符串。

学习心得:

PHP内核里有很多类似的"稀奇古怪的冷玩法",在我看来应该还是隶属细节知识,其实并不冷,只能说还得加强学习,无论是从哪个角度切入。

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:关于C语言初始化字符数组的"冷玩法":其实并不冷

Free Web Hosting