变量的初始化是指变量被分配存储空间后的第一次赋值
1.变量自动初始化。
对于外部变量和静态变量(内部链接的),会自动初始化默认值(int 0,char \o).
对于自动变量,不会自动初始化成默认值。
#include <string.h>
struct student{
char name[30];
int age;
};
void fun1(){
int d;
printf(".................d is %d\n",d);
}
int main(void)
{
struct student a;
int b;
char c;
printf("................address is %s\n",a.name);
printf("...............b address is %c\n",c);
fun1();
return 1;
}
b=0,但是 d的值是不确定的,所以对于变量一定要初始化。
2.变量的手动初始化
<1>数组的初始化.
char name[20]="abcdef";// 初始化能这么做,赋值时不能
char name[20]={'a','b','c','d','e','f','\O'};
<2>结构体的初始化
struct student{
char name[30];
int age;
}
int main(void){
struct student a={"abcd",10};
struct student b;
b.name="dddd";
b.age=10;
struct student c[2]={{"dddd",2},{"eee",3}};
}
3.变量初始化的时间。
外部变量和静态变量是在编译的时候完成初始化。(通过反汇编可以查看)外部变量和静态变量的区别在于作用域不同.
<1> 对于 函数外的静态变量具有文件作用域,只能在本文件访问.
<2> 对于代码快内的静态变量具有代码块作用域,只能在代码块内访问.
<3> 对于外部变量,它能在任何文件中访问。
1.变量自动初始化。
对于外部变量和静态变量(内部链接的),会自动初始化默认值(int 0,char \o).
对于自动变量,不会自动初始化成默认值。
#include <string.h>
struct student{
char name[30];
int age;
};
void fun1(){
int d;
printf(".................d is %d\n",d);
}
int main(void)
{
struct student a;
int b;
char c;
printf("................address is %s\n",a.name);
printf("...............b address is %c\n",c);
fun1();
return 1;
}
b=0,但是 d的值是不确定的,所以对于变量一定要初始化。
2.变量的手动初始化
<1>数组的初始化.
char name[20]="abcdef";// 初始化能这么做,赋值时不能
char name[20]={'a','b','c','d','e','f','\O'};
<2>结构体的初始化
struct student{
char name[30];
int age;
}
int main(void){
struct student a={"abcd",10};
struct student b;
b.name="dddd";
b.age=10;
struct student c[2]={{"dddd",2},{"eee",3}};
}
3.变量初始化的时间。
外部变量和静态变量是在编译的时候完成初始化。(通过反汇编可以查看)外部变量和静态变量的区别在于作用域不同.
<1> 对于 函数外的静态变量具有文件作用域,只能在本文件访问.
<2> 对于代码快内的静态变量具有代码块作用域,只能在代码块内访问.
<3> 对于外部变量,它能在任何文件中访问。