什么是结构体变量

2024-05-12

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)结构体成员的引用。如果一个结构体中又嵌套一个结构体,则要访问一个成员
时,应采取外层向内层逐级访问的方法。
求采纳为满意回答。

C语言中如何定义全局结构体变量

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。。
 
结构体中可以定义结构体。
最新文章
热门文章
推荐阅读