C语言中的内存管理、字符串处理、数据模型及高阶函数实现
复杂声明的解析
在C语言里,解析复杂声明并非易事。下面通过一个示例来阐释解析过程:
int* (* (*fp) (int) ) [10];
解析过程如下表所示:
| 表达式 | 解释 |
| ---- | ---- |
| fp | 第一个标识符 |
| ( fp) | 是一个指针 |
| ( ( fp) (int)) | 一个接受 int 类型参数并返回指针的函数 |
| int ( ( fp) (int)) [10] | 指向一个包含十个指向 int 类型指针的数组 |
为了简化解析复杂声明的过程,可以对声明的部分使用typedef。
字符串字面量
在C语言中,任何以空字符结尾的 char 元素序列都可视为字符串。这里着重讨论立即编码的字符串,也就是字符串字面量。若字符串字面量足够大,它们通常会存储在 .rodata 中。
以下是字符串字面量的示例:
// str_lit_example.c
char* str = "when the music is over, turn out the lights";
在这个例子中,str 仅是指向字符串首字符的指针。
依据语言标准,字符串字面量(或以此方式创建的指向字符串的指针
超级会员免费看
订阅专栏 解锁全文
1772

被折叠的 条评论
为什么被折叠?



