struct结构体
结构体定义
struct 结构体名{
结构体需要的变量;
}
结构体是一种集合,和类的概念相类似。简单理解,结构体就是一种自定义的数据类型。结构体的优势就在于很方便的进行多数据管理。 这里我们学习的是C++中的结构体。与C中结构体不同的是,C语言中的结构体只能描述一个对象的状态,不能描述一个对象的额行为。在C++中,C++的结构体可以包含函数,因此使C++的结构体具有类的功能,但是与类不同的是,结构体的函数默认为public,而class中默认的是private。
结构体的优点
- 可以封装一个类对象,绑定多个元素在一起,当某类元素进行比较从而重新排序时,其他相关联的元素不会丢失不见。
- 用结构体创造新的属性,简化运算。
struct student{
char name[16];
int age;
int grade;
void say()
{
printf("I am %s\n", name);
}
};
struct teacher{
char *name;//危险
int age;
int level;//职称
};
int main()
{
struct student ZhangSan;
struct teacher WangEr;
strcpy(ZhangSan.name, "ZhangSan");
ZhangSan.say();
return 0;
}
初始化与未初始化
位初始化
#include <stdio.h>
#include <string.h>
struct student{
char name[16];
int age;
int grade;
void say()
{
printf("I am %s\n", name);
}
};
struct teacher{
char *name;//危险
int age;
int level;//职称
void say()
{
printf("I am %s\n", name);
}
};
int main()
{
struct student ZhangSan;
struct teacher WangEr;
ZhangSan.say();//I am @@, 内存里面是什么就输出什么
strcpy(ZhangSan.name, "ZhangSan");
ZhangSan.say();//I am ZhangSan
return 0;
}
初始化
#include <stdio.h>
#include <string.h>
struct student{
char name[16];
int age;
int grade;
student()
{
strcpy(name, "Student");
}
void say()
{
printf("I am %s\n", name);
}
};
struct teacher{
char *name;//危险
int age;
int level;//职称
void say()
{
printf("I am %s\n", name);
}
};
int main()
{
struct student ZhangSan;
struct teacher WangEr;
ZhangSan.say();
strcpy(ZhangSan.name, "ZhangSan");
ZhangSan.say();
return 0;
}