一、结构:
现实需求,常常需要用一组不同类型的数据来描述一个事务,比如一个学生的学号、姓名和绩点。
C++允许程序员自己定义新的数据类型:结构
struct student{
unsigned int id;
char szname[20];
float fgpa;
}
student即成为自定义类型的名字,可以用来定义变量
如:student s1,s2;
struct data{
int year;
int month;
int day;
};
struct studentex{
unsigned id;
char name[20];
float fgps;
date birthday;
};
注:结构的成员变量可以是指向本结构类型的变量的指针
struct employee{
string name;
int age;
int salary;
employee * next;
};
student apj;
cin >> apj.fgpa;
apj.id=12345;
strcpy(apj.name,"tom");
cout<<apj.fgpa;
apj.birthday.year=1984;
unsigned int *p=&apj.id;//p指向apj中的id成员变量
结构变量的初始化
student apj={1234,"tom",3.56,{1234,12,31}};
二、全局、局部、静态变量
局部变量:在函数内部
全局变量:所有地方都可以使用
静态变量:全局变量都是静态变量。局部变量如果定义时加了“static",则为静态变量。静态变量的地址是不变的。
非静态变量(一定是局部变量)地址每次调用函数时可能不同,在函数的一次执行期间不变。
#include<ipstream>
using namespace std;
void Func(){
static int n=4; //该语句只执行一次
cout << n << endl;
++n;
}
int main(){
Func();
Func();
Func();
}
输出结果
4
5
6
原因:静态变量初始化只执行一次
注:如果把static去掉,则执行结果为三个四;
三、标识符的作用域
so easy