Joh*_*ohn 29 c structure initialization objective-c
很抱歉这个简单的问题,但我正在度假阅读一本关于核心音频的书,并没有我的C或Objective C书籍...
这个变量定义中的花括号是什么?
MyRecorder recorder = {0};
Run Code Online (Sandbox Code Playgroud)
Nik*_* B. 24
假设它MyRecorder是a struct,这将每个成员设置为它们各自的零表示(0对于整数,NULL对于指针等).
其实这也适用于所有其它数据类型一样int,double,指针,数组,嵌套结构,...,所有你能想象(感谢PMG指出这一点!)
更新:从上面链接的网站中提取的引用,引用C99的最终草案:
[6.7.8.21]如果括号括起的列表中的初始值设定项少于聚合的元素或成员,则聚合的其余部分应与具有静态存储持续时间的对象隐式初始化.
它按照C99标准初始化所有recorder结构成员0.看起来它似乎用0位初始化结构的每一位.但对于每个编译器而言都不是这样.
看到这个示例代码,
#include<stdio.h>
struct s {
int i;
unsigned long l;
double d;
};
int main(){
struct s es = {0};
printf("%d\n", es.i);
printf("%lu\n", es.l);
printf("%f\n", es.d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出.
$ ./a.out
0
0
0.000000
Run Code Online (Sandbox Code Playgroud)
小智 5
实际上,它并没有初始化结构的所有元素,只是初始化第一个元素。但是,其他的会自动初始化为 0,因为这是 C 标准要求的。
如果你输入:MyRecorder录音机={3};
第一个元素为 3,其他元素为 0。
| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |