1. 什么是结构体变量
结构体变量简称为结构变量,它由结构类型定义,有三种定义方法。下面以定义结构类型 book 和结构变量mybook 、 storybook 为例说明之。
1. 先定义结构类型,再定义结构变量。
struct book /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook, storybook;
用这种方法定义结构变量,是最常用的方法,但须注意不能省略关键字“ struct ”。还可以在定义结构变量的同时给它的成员赋初值。如:
struct book /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook = { “maths”, 24.7, “ 电子社 ”, “zhao” }, storybook;
则, mybook 变量的 price = 24.7 。
2. 定义结构类型的同时定义结构变量。
struct book /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct book mybook, storybook;
3. 不定义结构类型,直接定义结构变量。
struct /* 不定义结构类型名 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct book mybook, storybook;
需要说明的是,当某结构类型的成员又是另外一个结构类型时,称嵌套定义,其定义方法如下:
struct brith_date
{
int month ;
int day ;
int year ;
} ;
struct
{
char name[10] ;
char address[30];
char tel[12];
int age;
struct data birthday;
char sex[3];
} student_01 , employee ;
此例直接定义了 student_01 和 employee 两个变量,但是没有定义此结构体的名字,因此不能再定义与student_01 和 employee 同类的其它结构变量了!如下行定义是错误的:
truct boy, girl;
2. 结构体变量是什么意思?
结构体变量的定义 结构体是一种数据类型(像int、char、flaot是数据类型一样),可以用它定义变量。
用结构体类型定义变量的方式有三种:一、先定义结构体类型,再定义变量一般形式:struct 结构体名
{
类型标识符 成员名;
类型标识符 成员名;
…………….};
struct 结构体名 变量名表列;
例、struct student
{
int num; /* 学号 */
char name[20]; /* 姓名 */
char sex; /* 性别 */
int age; /* 年龄 */
float score; /* 成绩 */
char addr[30]; /* 地址 */
}; struct student student1, student2;结构体变量中的各成员,在内存中顺序存放。结构体变量所占内存大小用运算符sizeof计算。 例、printf(" %d %d \n",sizeof(struct student), sizeof(student1));为了方便,可以这样定义结构体变量:#define STUDENT struct studentSTUDENT
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}; STUDENT student1, student2;二、在定义类型的同时定义变量一般形式:struct 结构体名
{
类型标识符 成员名;
类型标识符 成员名;
…………….
}变量名表列;
例:struct student
{
int num; /* 学号 */
char name[20]; /* 姓名 */
char sex; /* 性别 */
int age; /* 年龄 */
float score; /* 成绩 */
char addr[30]; /* 地址 */
}student1, student2;
三、直接定义变量一般形式:struct
{
类型标识符 成员名;
类型标识符 成员名;
…………….
}变量名表列;(用无名结构体直接定义变量只能一次)
例:struct
{
int num; /* 学号 */
char name[20]; /* 姓名 */
char sex; /* 性别 */
int age; /* 年龄 */
float score; /* 成绩 */
char addr[30]; /* 地址 */
}student1, student2;
3. 结构体变量与简单变量的区别为何?
结构体定义的变量跟直接外部定义变量在本质上都是变量区别不大,但是在形式上有很大不同
普通变量就是一个实实在在单一的变量,结构体是变量的集合 一般都是定义一个数据结构的属性
比如一个音频文件,或者视频文件都会有文件头属性,用结构体变量定义头文件属性便于管理
如一个视频文件中有像素帧、像素高、像素宽、编码类型等等,例如:
加入有一个视频名为aa.wav
那么我们就要定义变量来保存它的基本属性
char *name; //用来保存视频名称
int pHeight; //用来保存视频像素高
int pWidth; //用来保存像素宽
int CodeType; //编码类型
以上就是用的单一变量的形式表示,但是这种方法有很多不便,如果有多个视频变量定义将变得繁琐复杂,这个时候结构体的优势就明显了 如:
struct Vedio
{
char *name; //用来保存视频名称
int pHeight; //用来保存视频像素高
int pWidth; //用来保存像素宽
int CodeType; //编码类型
};
struct Vedio V1,V2,V3。。
结构体中可以定义结构体。
4. 全局变量和局部变量的本质区别
局部变量和全局变量的区别有:定义范围不同,作用域不同、生命期不同。
主要表现在:1、定义范围不同,一个是函数体内部,一个是函数外部。2、作用域不同,一个仅限于函数体内容,一个是整个程序。3、生命期不同,全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。全局变量:所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件。局部变量:定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。
5. C语言中如何定义全局结构体变量
1.结构体类型数据的定义方法和引用方法
定义结构体:struct
结构体名
{
成员列表
};
定义结构体类型的变量:有三种形式
①
定义类型时定义变量:struct
结构体类型名
{
成员列表
}变量名列表;
②
直接定义结构类型变量:struct
{
成员列表
}变量名列表;
③
由已定义的结构体类型来定义变量:struct
结构体类型名变量名列表;
引用结构体类型变量:在定义了结构体类型变量后,采用下列方法引用结构体类型的
变量:
结构体变量名.成员名
这里"."是成员(分量)运算符,它在所有的运算符中优先级最高。
使用结构体时注意:
(1)结构体类型和结构体类型变量是不同的概念,定义结构体类型变量时应先定义
结构体类型,然后再定义变量属于该类型。
(2)定义了—个结构体类型后,系统并没有为所定义的各成员项分配相应的存储空
间。只有定义了一个结构体类型变量,系统才为所定义的变量分配相应的存储空间。结构
体类型变量占用内存的字节数是所有成员占用内存长度之和。
(3)结构体成员的引用。如果一个结构体中又嵌套一个结构体,则要访问一个成员
时,应采取外层向内层逐级访问的方法。
求采纳为满意回答。
6. 什么是结构体变量?
结构体变量简称为结构变量,它由结构类型定义,有三种定义方法。下面以定义结构类型
book
和结构变量mybook
、
storybook
为例说明之。
1.
先定义结构类型,再定义结构变量。
struct
book
/*
定义结构体类型
*/
{
char
bookname[20];
float
price;
char
publisher[20];
char
author[10];
}
;
struct
book
mybook,
storybook;
用这种方法定义结构变量,是最常用的方法,但须注意不能省略关键字“
struct
”。还可以在定义结构变量的同时给它的成员赋初值。如:
struct
book
/*
定义结构体类型
*/
{
char
bookname[20];
float
price;
char
publisher[20];
char
author[10];
}
;
struct
book
mybook
=
{
“maths”,
24.7,
“
电子社
”,
“zhao”
},
storybook;
则,
mybook
变量的
price
=
24.7
。
2.
定义结构类型的同时定义结构变量。
struct
book
/*
定义结构体类型
*/
{
char
bookname[20];
float
price;
char
publisher[20];
char
author[10];
}
struct
book
mybook,
storybook;
3.
不定义结构类型,直接定义结构变量。
struct
/*
不定义结构类型名
*/
{
char
bookname[20];
float
price;
char
publisher[20];
char
author[10];
}
struct
book
mybook,
storybook;
需要说明的是,当某结构类型的成员又是另外一个结构类型时,称嵌套定义,其定义方法如下:
struct
brith_date
{
int
month
;
int
day
;
int
year
;
}
;
struct
{
char
name[10]
;
char
address[30];
char
tel[12];
int
age;
struct
data
birthday;
char
sex[3];
}
student_01
,
employee
;
此例直接定义了
student_01
和
employee
两个变量,但是没有定义此结构体的名字,因此不能再定义与student_01
和
employee
同类的其它结构变量了!如下行定义是错误的:
truct
boy,
girl;
7. 结构体变量是什么意思?
结构体是一种新数据类型,属构造类型,它由若干类型各异的“成员”组成;描述这些“成员”可以使用任何基本数据类型,甚至是另外一种构造数据类型都行。
定义结构类型使用关键字“ struct”。
下边几行定义结构类型 person ,并用该类型定义结构变量 zhangshan 和结构数组 class_one[100] :
struct person
{
char name[20]; /* 定义姓名 */
char color[10]; /* 定义肤色 */
char sex[2]; /* 定义性别 */
int age; /* 定义年龄 */
}; /* 注意这里有分号 */
struct person zhangshan, class_one[100];
现在,再定义一个商品结构类型 goods ,设商品包含属性有:商品名、商品代码、厂商、单价、质量。把相同类型的成员定义在一行, goods 可定义如下:
struct goods
{
char goodsname[15], goodcode[15], companyname[30] ;
float price, weight ;
} ;
struct 是结构体的关键字, goods 是结构体名,花括号内的所有变量是这个结构体的成员。这种写法虽然节省了程序行,但降低了可读性,故不建议初学者这样写。
综上,结构体类型简称为结构类型,其定义格式为:
struct
{
类型 成员 1;
类型 成员 2;
……
};
二、结构体类型变量的定义
结构体变量简称为结构变量,它由结构类型定义,有三种定义方法。下面以定义结构类型 book 和结构变量 mybook 、 storybook 为例说明之。
1. 先定义结构类型,再定义结构变量。
struct book /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook, storybook;
用这种方法定义结构变量,是最常用的方法,但须注意不能省略关键字“ struct ”。还可以在定义结构变量的同时给它的成员赋初值。如:
struct book /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook = { “maths”, 24.7, “ 电子社 ”, “zhao” }, storybook;
则, mybook 变量的 price = 24.7 。
2. 定义结构类型的同时定义结构变量。
struct book /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct book mybook, storybook;
3. 不定义结构类型,直接定义结构变量。
struct /* 不定义结构类型名 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct book mybook, storybook;
需要说明的是,当某结构类型的成员又是另外一个结构类型时,称嵌套定义,其定义方法如下:
struct brith_date
{
int month ;
int day ;
int year ;
} ;
struct
{
char name[10] ;
char address[30];
char tel[12];
int age;
struct data birthday;
char sex[3];
} student_01 , employee ;
此例直接定义了 student_01 和 employee 两个变量,但是没有定义此结构体的名字,因此不能再定义与 student_01 和 employee 同类的其它结构变量了。
8. 结构体变量和普通变量的区别
结构体定义的变量跟直接外部定义变量在本质上都是变量区别不大,但是在形式上有很大不同
普通变量就是一个实实在在单一的变量,结构体是变量的集合 一般都是定义一个数据结构的属性
比如一个音频文件,或者视频文件都会有文件头属性,用结构体变量定义头文件属性便于管理
如一个视频文件中有像素帧、像素高、像素宽、编码类型等等,例如:
加入有一个视频名为aa.wav
那么我们就要定义变量来保存它的基本属性
char *name; //用来保存视频名称
int pHeight; //用来保存视频像素高
int pWidth; //用来保存像素宽
int CodeType; //编码类型
以上就是用的单一变量的形式表示,但是这种方法有很多不便,如果有多个视频变量定义将变得繁琐复杂,这个时候结构体的优势就明显了 如:
struct Vedio
{
char *name; //用来保存视频名称
int pHeight; //用来保存视频像素高
int pWidth; //用来保存像素宽
int CodeType; //编码类型
};
struct Vedio V1,V2,V3。。
结构体中可以定义结构体。