结构体初始化
参考:
https://blog.csdn.net/ericbar/article/details/79567108
http://c.biancheng.net/view/1407.html
定义数组结构体
struct array{
int size;
int usenum;
int *arr;
}
初始化方式1:定义时初始化
struct array test={10,0,NULL};
初始化时顺序对应。
初始化方式2:
定义后逐个对结构体变量进行赋值
struct array test;
test.size=10;
test,usenum=0;
test.arr = NULL;
初始化方式3:
定义结构体时进行乱序初始化,相当于第一种与第二种方法的组合
struct array test={
.size=10;
.arr = NULL;
,usenum=0;
}
个人觉得这种方式相对于第一种更加明了 知道各个变量的具体值。相对于第一种更加简便。
初始化方式4:
同样可以乱序
struct array test={
size:10;
arr : NULL;
usenum:0;
}
声明与定义的区别
在上述说明结构体的过程中对变量的定义
对变量的定义和声明概念有点模糊,现在进行总结,首先明确定义和声明的区别,无论是函数还是变量的定义都要有分配存储空间和内存地址的操作,而声明则不是,仅仅告诉编译器有这个变量而已。
函数定义和声明
函数的声明:函数原型就是函数的声明,说白了就是函数的函数名、返回值类型、参数列表。其主要作用就是给编译器提供原型,让编译器在编译程序时帮我们进行参数的静态类型检查。
函数定义:函数定义就是函数本身,函数名就是函数存储内存地址 函数调用实际上来说就是解指针引用
注: 在进行编译时 编译器对程序处理以每个文件为单位 并按照语句顺序进行处理 说这些什么意思呢 就是说或如果在fun1中调用fun2 必须在fun1 之前进行声明 或者进行定义(此时的定义还有声明的作用)
变量的声明和定义
通过上述对于函数的分析,可以推出,变量的定义是为变量分配内存空间并规定变量名称,但是与函数不同的是,变量的定义和声明是在一起的,当你定义一个变量后,作用域从该行开始到定义的代码段末结束。
除此之外变量的声明语句还有
extern int a;
只有声明的作用不具有定义作用,如果进行初始化则会出现错误,编译器会发现有两处定义,即发生重复定义错误。
最后declare and definition