您的位置:首页 > 编程语言 > C语言/C++

(C/C++基础)结构体_初始化_赋值_定义_声明

2014-01-10 21:07 633 查看
首先介绍一下初始化、赋值、定义、声明这四个概念。

初始化:创建变量并给它赋初值。初始化和赋初值不同。初始化=带指定初始值的定义。一个程序中,一个变量只能初始化一次。如:int i=0;

赋值:擦除对象的当前值并用新值替代,在一个程序中,一个变量可以多次赋值。

定义:用来为变量分配内存空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。例:int i;(单纯定义) int i=0;(带指定初始值的定义)

声明:用来向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过使用extern关键字声明变量而不是定义它。例:extern int i;

代码1:初始化结构体全局变量,可以。

#include"ds.h"

/*定义结构体*/
typedef struct Pos{
int x;
int y;
}Pos;

/*在main函数外初始化结构体全局变量*/
/*大括号只能在初始化结构体变量中使用,为结构体变量赋值哪怕是赋初值都只能对结构体中每个成员单独赋值*/
Pos Begin={1,1},End={8,8};

int main()
{
printf("%d,%d,%d,%d\n",Begin.x,Begin.y,End.x,End.y);
return 0;
}

代码2:先定义结构体全局变量,再对其赋值,不可以。

注:全局空间中(函数体之外)只能执行定义和初始化,其他操作都不被允许。

#include"ds.h"

/*定义结构体*/
typedef struct Pos{
int x;
int y;
}Pos;

/*在main函数外先定义结构体全局变量,再对其赋初值*/
Pos Begin,End;

Begin.x=1; //赋值不允许出现在全局空间中。编译器会将它当做全局变量定义来处理,于是会报告缺少类型标识符
Begin.y=1;
End.x=8;
End.y=8;

int main()
{
printf("%d,%d,%d,%d\n",Begin.x,Begin.y,End.x,End.y);
return 0;
}


代码3:在main中初始化结构体局部变量,可以。

#include"ds.h"

/*定义结构体*/
typedef struct Pos{
int x;
int y;
}Pos;

int main()
{
/*在main函数内初始化结构体局部变量*/
/*大括号只能在初始化中使用,赋值哪怕是赋初值都只能对结构体中每个成员单独赋值*/
Pos Begin={1,1},End={8,8};

printf("%d,%d,%d,%d\n",Begin.x,Begin.y,End.x,End.y);
return 0;
}

代码4:在main中先定义结构体局部变量,再对其赋值,可以。

#include"ds.h"

/*定义结构体*/
typedef struct Pos{
int x;
int y;
}Pos;

int main()
{
/*在main函数内先定义结构体局部变量,再对其赋初值*/
Pos Begin,End;

Begin.x=1;
Begin.y=1;
End.x=8;
End.y=8;

printf("%d,%d,%d,%d\n",Begin.x,Begin.y,End.x,End.y);
return 0;
}


代码5:在main外先定义结构体全局变量,在main内对其赋值,可以。

#include"ds.h"

/*定义结构体*/
typedef struct Pos{
int x;
int y;
}Pos;

/*在main函数外定义结构体全局变量*/
/*在main函数中对其赋初值*/
Pos Begin,End;

int main()
{
Begin.x=1;
Begin.y=1;
End.x=8;
End.y=8;

printf("%d,%d,%d,%d\n",Begin.x,Begin.y,End.x,End.y);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: