c语言结构变量
1. c语言结构体变量怎么使用
结构体变量简称为结构变量,它由结构类型定义,有三种定义方法。下面以定义结构类型 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. C语言结构体变量值的意义是什么
结构体类型与其他数据类型相同,其变量要通过数据类型定义,但结构体类型是一种自定义数据类型,其变量定义方式与其他数据类型有些许区别。结构体变量的定义方式主要有两种,下面分别进行介绍。
1、先定义结构体类型,再定义结构体变量
先定义结构体类型,再定义结构体变量,这种结构体变量定义方式与其他数据类型相同,其语法格式如下:struct 结构体类型名 结构体变量名;
以上一节定义的struct Student结构体类型为例,定义该结构体变量的示例代码如下:struct Student stu1,stu2;
上述代码定义了2个结构体类型变量stu1和stu2,这时,stu1和stu2便具有了结构体特征,编译器会为它们分配一段内存空间用于存储具体数据,具体如下图所示。
.png
struct Student结构体变量stu1、stu2的存储结构
需要注意的是,使用结构体类型定义变量时,struct关键字不可少,struct Student作为整体才表示一个结构体类型。缺少struct关键字,程序编译不通过。错误示例代码如下:Student stu1; //错误,缺少struct关键字
编译器在编译上述代码时会报错,提示未定义标识符“Student”。
2、 在定义结构体类型的同时定义结构体变量
定义结构体类型的同时定义结构体变量,其语法格式如下:struct 结构体类型名称
{undefined
数据类型 成员名1;
数据类型 成员名2;
…
数据类型 成员名*n*;
}结构体变量名列表;
以定义struct Student结构体类型,并定义struct Student类型的变量stu1、stu2为例,具体示例如下:struct Student{undefined
int num; char name[10];
char sex;
}stu1,stu2;
上述代码在定义结构体类型struct Student的同时定义了结构体变量stu1和stu2,该方式的作用与先定义结构体类型,再定义结构体变量作用相同,其中,stu1和stu2中所包含的成员类型都是一样的。
3. C语言中定义结构体类型变量的方法
1.结构体类型数据的定义方法和引用方法
定义结构体:struct
结构体名
{
成员列表
};
定义结构体类型的变量:有三种形式
①
定义类型时定义变量:struct
结构体类型名
{
成员列表
}变量名列表;
②
直接定义结构类型变量:struct
{
成员列表
}变量名列表;
③
由已定义的结构体类型来定义变量:struct
结构体类型名变量名列表;
引用结构体类型变量:在定义了结构体类型变量后,采用下列方法引用结构体类型的
变量:
结构体变量名.成员名
这里"."是成员(分量)运算符,它在所有的运算符中优先级最高。
使用结构体时注意:
(1)结构体类型和结构体类型变量是不同的概念,定义结构体类型变量时应先定义
结构体类型,然后再定义变量属于该类型。
(2)定义了—个结构体类型后,系统并没有为所定义的各成员项分配相应的存储空
间。只有定义了一个结构体类型变量,系统才为所定义的变量分配相应的存储空间。结构
体类型变量占用内存的字节数是所有成员占用内存长度之和。
(3)结构体成员的引用。如果一个结构体中又嵌套一个结构体,则要访问一个成员
时,应采取外层向内层逐级访问的方法。
求采纳为满意回答。
4. C语言结构体变量问题
您好,很高兴回答您的问题。
在c语言中,有一种特殊的类型,就是结构体类型,这是构造类型的一种,也就是由若干个基本类型组合构成的特殊类型。
结构体类型与其他的基本类型一样,要先定义再使用。那么定义分成两部分,一个是定义结构,也就是包含哪些内容;另一个就是定义类型,表示用来具有这个类型的变量。
您的程序中,STU就是定义结构,t就是具有这种类型的数组,n就是具有这种类型的变量。两者是不同的概念,需要区别开来。
5. 在C语言中。结构体变量之间可以相互赋值吗
可以直接赋值。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。
C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
举例:
voidmain()
{
STUstu1={0,10};
STUtemp={12,88};
STU*p1=&stu1;
STU*p2=&temp;
printf("%d-%d\n",temp.name,temp.num);
temp=stu1;
printf("%d-%d\n",temp.name,temp.num);
temp={10,10};
printf("%d-%d\n",stu1->name,stu1->num);
printf("%ld-\n",&stu1);
printf("%ld-\n",stu1);
printf("%ld-\n",&temp);
printf("%ld-\n",temp);
change(stu1,temp);
temp=stu1;
p2=p1;
printf("%d-%d\n",p2->name,p2->num);
}
(5)c语言结构变量扩展阅读:
C语言中变量间互相赋值很常见,例如:
inta,b;
a=b;
结构体也是变量(自定义变量),两个结构体之间直接赋值按道理应该也是可以的吧,将一个结构体对象赋值给另一个结构体对象的。
例:
#include"stdio.h"
structtest
{
inta;
intb;
intc;
char*d;
};
intmain()
{
structtestt1={1,2,3,"tangquan"};
structtestt2={0,0,0,""};
printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);
t2=t1;
printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);
return0;
}
6. C语言中如何定义全局结构体变量
结构的定义
用户定义自己所需要的结构型,可以采用下列定义语句:
struct结构型名
{数据类型符1成员名1;
数据类型符2成员名2;
数据类型符3成员名3;
...
数据类型符n成员名n;
};
定义结构型变量的方法有三种,在定义的同时,可以给变量的每个成员赋初值。
先定义结构型,后定义变量
例如:
structstudent
{longnumber;
charname[10];
charsex;
floatscore[3];
};
...
structstudentx,y;/*定义student结构型的变量x和y*/
在定义结构型变量的同时,可以对结构型变量的所有成员赋初值。
例如:
structstudentx={100001L,"zhao1",'f',{89,94,86}},
y={100002L,"zhao2",'m',{78,86,92}};
2.定义结构型的同时定义变量
这种方法是将结构型的定义和变量定义同时进行。然后仍然可以使用这种结构型来定义其他的变量。
例如:
structstudent
{longnumber;
charname[10];
charsex;
floatscore[3];
}x={1000001L,"zhao1",'f',{89,94,86}};/*定义结构型同时定义变量并赋值*/
...
structstudenty={100002L,"zhao2",'m',{78,86,92}}
/*这个语句是正确的是因为前面定义了数据类型符structstudent*/
3.定义无名称的结构型的同时定义变量
这种方法是将结构型定义和变量的定义同时进行,但省略了结构型的名称,以后将无法使用这种结构型来定义其他变量。例子与2的例子差不多,只是因为没有定义结构型的名称,所以后面对y的赋值就不可用。
从变量的生存期来分,我们把生存期覆盖了定义点到整个程序结束的变量成为具有全局寿命的变量,简称“全局变量”。
习惯上结构定义都是在main函数之前的,从这一点上看,结构都是全局变量,不知道这样回答是不是让你满意。