现在的位置: 首页 > 综合 > 正文

结构体/共用体/类中分号分析

2017年11月30日 ⁄ 综合 ⁄ 共 1493字 ⁄ 字号 评论关闭

结构体(struct  structname) 共用体(union  unionname)  类 (class classname);

      结构体类型和结构体类型变量:  结构体类型和结构体类型变量不要混淆这两个概念,因为结构体类型是一种类型和int float 等这些是同一个概念,而变量是会分配内存的就如我们定义的一个变量所以这两个概念不要混淆。

    结构体类型的定义:

struct   student

{

int age;

char  name [20];

int  score;

} ;

定义了一个结构体类型 她的内存分配大小是所有这些类型大小的和:4+40+4=48字节;

    结构体变量的定义:structstudnet stu1,sty2;

声明两个结构体变量系统会给这两个变量分配48 字节大小的内存空间;

在结构体里定义的变量之后加一个分号表示一个语句结束。

为什么在结构体类型后面加分号:同样这也表示了这个结构定义结束,因为在c/c++中一个分号表示一条语句结束。这也是c/c++语法规定的。

结构体赋值和一般的赋值不同但这里不做详细解释,如果有不清楚的可以看一下结构体这章。

共用体类型的定义:

  union   student

{

int age;

char f;

double d;

};

定义一个公用体,这个共用体的大小不是和结构体一样所有变量的大小的和而是这些变量中占字节最大的哪一个成员变量的大小。结构体的内存分配和结构体是不同的,因为他是共用体所以他们不是像结构体一样每个变量都有自己的内存,而是大家共用一块内存。

定义共用体类型的变量:

union student  st1,st2;

 共用体类型的数据的特点:

   1. 共用体中定义的成员变量是存放在同一块内存中,这些成员变量可以是不同类型。但在每一瞬时只能存放其中的一个成员变量,而不是所有的成员变量都在同时存放。也就是在每一瞬时只有一个成员变量是起作用的其他的不起作用。在瞬时只有一个成员变量起作用而不是所有的成员变量起作用。

   2. 共用体中起作用的那个成员变量就是最后一次存放的成员,在输入一个新的成员后原有的成员就失去了作用。

   3.在共同体中定义的共同体变量、共同体中的所有变量的地址都是相同的。

c++中类的定义

为了简单易懂这里没有定义析构函数;

#include<iostream.h>
#include<string.h>
class Person{
private :
int age;
int score;
char name[20];
public :
Person();
Person(int a, int s, char*p);
void tell();
};

Person::Person(){
age=0;
score=0;

}
Person::Person(int a,int s, char * n){
age=a;
score=s;
name= new char[strlen(n)+1];
strcpy(name,n);

}

void Person::tell(){
cout<<"age="<<age<<endl;
cout<<"score="<<score<<endl;
cout<<"name="<<name<<endl;
}

int main(){
Person p1;
Person p2(10,90,"dong");
p2.tell();
return 0;
}

我们发现类的定义和上面结构体 共用体的定义的很相似的,在定义完了之后都会有分号表示定义完毕,然后都会通过自己定义的这种类型类声明变量来使用而在类中只是声明了对象来使用。一个使面向过程的一个面向对象的对然使用的方式不同,在内存中分配的方式不同,使用的思想不同但是我们发现在定义的格式上是一致的。

抱歉!评论已关闭.