指针
指针和指针变量:指针是指地址,指针变量是指存储指针的变量。
&为取地址符,&a是变量a的存储地址,而*a是a指向地址的内容。
int a;
int b[10];
int *c = &a;
int *d = b;
当形参是指针时,例如swap(&a,&b),函数定义是int swap(*a,*b),此时仍然是值传递,只不过传递的值是地址。
引用
是变量的别名,不开辟新的地址空间,而是与原变量公用一个地址空间,只能在赋初值时确定所代表的地址空间,不能更改。
int a;
int &b = a;
形参为引用时,swap(a,b),函数定义是int swap(&a,&b)
这也是指针和引用的却别,指针要单独给指针变量开辟地址空间用来存储地址,而引用不需要单独存储地址空间,而是就等于原变量的地址空间。
结构体
结构体指针:
struct student;
student *p = &student;
//如果要访问其中的元素
student.name = "liu";
p->name = "liu";
(*p)->name = "liu";
共用体
union data{
int a;
float b;
double c;
};
//和结构体类似,区别是,共用体所有成员的首地址一样的,因此同一时刻只能表示一个成员,占用空间大小为其中最大的成员所占用的空间大小。
枚举
enum week{sun,mon,tue,thi};
//说明week类型,只能取这几个值,其实C++赋值是从第一个赋0,1,2.不过不能直接说是0,而要类型转换
week week1;
week1 = (week) 0;//这时,week1输出为sun。