百度
360搜索
搜狗搜索

结构体定义变量,定义结构体类型的同时能够定义它的变量详细介绍

本文目录一览: 什么是结构体变量?

定义结构体类型,然后用这个类型定义出来的变量就是结构体变量
例如:
typedef
struct{
int
a;
}num;
int
main{
num
b;

b
就是结构体的变量
num就是类似int的类型标识
就是结构体类型的变量
如:struct
stu
{
int
id;
int
number;
};
int
apple;
所以stu
和apple都是变量,只不过apple是基本类型。
在C语言中,结构体的成员只能是数据,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;

定义结构体变量语法有几种,分别是

一是结构标记的声明,如下:
struct point {
int x;
int y;
};
创建了标记point,就可以用它来声明变量:
struct point p1,p2;
注意不能漏掉前面的struct。
结构标记的声明可以和结构变量的声明合并在一起:
struct point {
int x;
int y;
}p1,p2;
二是结构类型的定义:
typedef struct {
int x;
int y;
} point;
然后就可以像内置类型一样使用point,如声明变量:
point p1,p2;
这里不允许写struct point。

定义结构体类型的同时能够定义它的变量

结构体是经常用到的数据类型,使用频率不亚于指针,所以需要重视,不过用法非常简单。结构体变量的定义。前面只是定义了名字为Student的结构体类型,并非定义了一个结构体变量,就像int一样,只是一种类型。接下来定义一个结构体变量,方式有好多种。1.先定义结构体类型,再定义变量第6行定义了一个结构体变量,变量名为stu。struct和Student是连着使用的。2.定义结构体类型的同时定义变量结构体变量名为stu。3.直接定义结构体类型变量,省略类型名结构体变量名为stu。四、结构体的注意点。1.不允许对结构体本身递归定义。如下做法是错误的,注意第3行。2.结构体内可以包含别的结构体。3.定义结构体类型,只是说明了该类型的组成情况,并没有给它分配存储空间,就像系统不为int类型本身分配空间一样。只有当定义属于结构体类型的变量时,系统才会分配存储空间给该变量。第1~4行并没有分配存储空间,当执行到第6行时,系统才会分配存储空间给stu变量。4.结构体变量占用的内存空间是其成员所占内存之和,而且各成员在内存中按定义的顺序依次排列。比如下面的Student结构体:在16位编译器环境下,一个Student变量共占用内存:2+2+4=8字节。

在结构体中定义另一个结构体类型变量可以吗

可以的
只要另一个结构体的定义 或者声明 在当前结构体之前即可。
但不可以互相嵌套。
比如
struct a{ int a;};struct b{ int b; struct a m; char c;};这样是完全合法 而且是很常用的。

C语言 定义结构体变量

用typedef用来对结构体再定义一个类型名
这种定义方法定义的结构体,应该这样使用:
①struct S str;
②T str;
这两种效果是一摸一样的,你可以试试看,希望能帮到你。
前面一个貌似少了一个
typedef,这样a直接就是结构体变量
;后面一种是正确的,定义变量的时候需另外定义,struct
Node
a;
1.结构体类型数据的定义方法和引用方法
定义结构体:struct
结构体名
{
成员列表
};
定义结构体类型的变量:有三种形式

定义类型时定义变量:struct
结构体类型名
{
成员列表
}变量名列表;

直接定义结构类型变量:struct
{
成员列表
}变量名列表;

由已定义的结构体类型来定义变量:struct
结构体类型名变量名列表;
引用结构体类型变量:在定义了结构体类型变量后,采用下列方法引用结构体类型的
变量:
结构体变量名.成员名
这里"."是成员(分量)运算符,它在所有的运算符中优先级最高。
使用结构体时注意:
(1)结构体类型和结构体类型变量是不同的概念,定义结构体类型变量时应先定义
结构体类型,然后再定义变量属于该类型。
(2)定义了—个结构体类型后,系统并没有为所定义的各成员项分配相应的存储空
间。只有定义了一个结构体类型变量,系统才为所定义的变量分配相应的存储空间。结构
体类型变量占用内存的字节数是所有成员占用内存长度之和。
(3)结构体成员的引用。如果一个结构体中又嵌套一个结构体,则要访问一个成员
时,应采取外层向内层逐级访问的方法。
求采纳为满意回答。
  首先,定义一个结构的一般形式为:
  struct结构名
  {
  //成员表列
  };
  成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:
  struct stu
  {
  int num;
  char name[20];
  char sex;
  float score;
  };
  在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。
  然后,当结构定义完成后,即创建了一种数据类型,可以像int、float等内置类型一样使用,以上面定义的stu结构体来和int类型对比着看。
  int a;//定义一个int类型的变量a
  stu a; //定义一个stu类型的变量a
  int *p; //定义一个int类型的指针p
  stu *p; //定义一个stu类型的指针p
  int a[10];//定义一个int类型的数组a,它有10个元素,每个元素是int类型
  stu a[10];//定义一个stu类型的数组a,它有10个元素,每个元素是stu类型。

阅读更多 >>>  包含evaluate公式的词条

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

.h中
struct people
{char name[20];
char num[15];
char mail[20];
}peop[N];
.cpp中 extern struct pepole peop[n];
希望采纳 有不懂的可以追问
结构的定义
用户定义自己所需要的结构型,可以采用下列定义语句:
struct 结构型名{ 数据类型符1 成员名1; 数据类型符2 成员名2; 数据类型符3 成员名3; ... 数据类型符n 成员名n;};定义结构型变量的方法有三种,在定义的同时,可以给变量的每个成员赋初值。
先定义结构型,后定义变量
例如:
struct student{long number; char name[10]; char sex; float score[3];};...struct student x,y; /*定义student结构型的变量x和y*/在定义结构型变量的同时,可以对结构型变量的所有成员赋初值。
例如:
struct student x={100001L,"zhao1",'f',{89,94,86}}, y={100002L,"zhao2",'m',{78,86,92}};2.定义结构型的同时定义变量
这种方法是将结构型的定义和变量定义同时进行。然后仍然可以使用这种结构型来定义其他的变量。
例如:
struct student{long number; char name[10]; char sex; float score[3]; }x={1000001L,"zhao1",'f',{89,94,86}}; /*定义结构型同时定义变量并赋值*/ ... struct student y={100002L,"zhao2",'m',{78,86,92}} /*这个语句是正确的是因为前面定义了数据类型符struct student*/3.定义无名称的结构型的同时定义变量
这种方法是将结构型定义和变量的定义同时进行,但省略了结构型的名称,以后将无法使用这种结构型来定义其他变量。例子与2的例子差不多,只是因为没有定义结构型的名称,所以后面对y的赋值就不可用。
从变量的生存期来分,我们把生存期覆盖了定义点到整个程序结束的变量成为具有全局寿命的变量,简称“全局变量”。
习惯上结构定义都是在main函数之前的,从这一点上看,结构都是全局变量,不知道这样回答是不是让你满意。

定义结构体变量

用typedef用来对结构体再定义一个类型名
这种定义方法定义的结构体,应该这样使用:
①struct S str;
②T str;
这两种效果是一摸一样的,你可以试试看,希望能帮到你。
1.如果你是用的是c的编译器(其中有些),那么该编译器可能不支持直接写Rec t1, 应该写成 struct REC t1.
2. typedef struct REC{....} rec; 意思是把struct REC 定义成 rec. 之后,可以用rec t1,t2; 来代替 struct REC t1,t2; (而不是上诉的 {}后直接加t1,t2)
3. struct {} REC; 是不对的,这里的REC不是结构体的名,而成了一个实例。 就好象 int a; 你不能在写 a b来定义b。 如果你想用这种写法,那么就直接写 struct {} t1,t2; 这样,你就获得了两个结构体实例, 但是之后你还想定义这种结构体时,就需要重写写struct{}。 所以,这种写法只在你确定只需定义t1,t2时采用。

1.定义一个结构体变量,起成员项包括员工号,姓名,工龄,工资,输入所需的具体数据,然后输出。

用java写了,比较简单,定义一个员工的对象。
public class person{
int number;
String name;
double salary,;
int workYears;
public static void main(String args []){
person p =new petson();
scanner sc=new scanner(System.in)
System.out.println("请按顺序输入员工号,姓名,工资,工龄")
p.number=sc.nextInt();
p.name=sc.nextString();
p.salary=nextDouble();
p.workYears=nextInt();
System.out.println("该员工信息如下,员工号:"+p.number+",姓名:"+p.name+",工资:"+p.salary+",工龄:"+p.workYears);
}
}

结构体类型的变量

在定义了结构体变量以后,当然可以引用这个变量。(1) 可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。如上面的student1和student2都是student类型的变量,可以这样赋值:student1= student2; (2) 可以引用一个结构体变量中的一个成员的值。例如, student1.num表示结构体变量student1中的成员的值,如果student1的值如图7.2所示,则student1.num的值为10001。引用结构体变量中成员的一般方式为结构体变量名.成员名例如可以这样对变量的成员赋值:student1.num=10010; (3) 如果成员本身也是一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。例如,对上面定义的结构体变量student1, 可以这样访问各成员:student1.num (引用结构体变量student1中的num成员)如果想引用student1变量中的birthday成员中的month成员,不能写成student1.month,必须逐级引用,即student1.birthday.month=12;(引用结构体变量student1中的birthday成员中的month成员) (4) 不能将一个结构体变量作为一个整体进行输入和输出。例如,已定义student1和student2为结构体变量,并且它们已有值。不能企图这样输出结构体变量中的各成员的值:cin>>student1;只能对结构体变量中的各个成员分别进行输入和输出。 (5) 对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算种类)。例如student2.score=student1.score;sum=student1.score+student2.score;student1.age++;++student1.age;由于“.”运算符的优先级最高,student1.age++相当于(student1.age)++ 。++是对student1.age进行自加运算,而不是先对age进行自加运算。 (6) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。如cout<<&student1;//输出student1的首地址cout<<&student1.age;//输出student1.age的地址结构体变量的地址主要用作函数参数,将结构体变量的地址传递给形参。例 引用结构体变量中的成员。#include

using namespace std;struct Date//声明结构体类型Date{int month;int day;int year;};{int num;char sex;Date birthday;//声明birthday为Date类型的成员float score;}student1,student2={10002,″Wang Li″,′f′,5,23,1982,89.5};//定义Student 类型的变量student1,student2,并对student2初始化int main( ){ student1=student2;//将student2各成员的值赋予student1的相应成员cout<
<student1.num<<endl; 输出student1中的num成员的值cout<<student1.sex<<endl; 输出student1中的sex成员的值cout<<student1.birthday.month<<′ ′<<student1.birthday.day<<′ ′ <<student1.birthday.year<<endl; 输出student1中的birthday各成员的值cout<<student1.score<<endl;return 0; }运行结果如下:10002 wang li f 5 23 1982 89.5 7.1.4

</student1.num<

网站数据信息

"结构体定义变量,定义结构体类型的同时能够定义它的变量"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:结构体定义变量,定义结构体类型的同时能够定义它的变量的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!