引用 自定义数据类型.
x &a t
y
void dd(int &x, int &y, int z)
{
x=x+z;
y=y-x; z=10;
x=8 y=-4
x=13 y=-17
z=10
z=10
cout<<“(2)”<<x<<‘\t’<<y<<‘\t’<<z<<endl; } (2) 8 -4 10 void main(void) (2) 13 -17 10 { int a=3,b=4,c=5; (1) 13 -17 5 for(int i=0;i<2;i++) dd(a,b,c); cout<<“(1)”<<a<<‘\t’<<b<<‘\t’<<c<<endl; }
}
第七章
结构体、共同体和枚举类型
定义:
将不同种类型的数据有序地组合在一起,构
造出一个新的数据类型,这种形式称为结构
体。 结构体是多种类型组合的数据类型。
struct
结构体名
关键字 结构体名
{ 成员列表 };
struct student { int num; char name[20];
不同数据 类型组成 的成员
};
STUDENT student1,student2;
二、在定义类型的同时定义变量
struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; } student1, student2;
第六章
引用
引用 对变量起另外一个名字 (外号),这个名字称为该 变量的引用。
<类型> &<引用变量名> = <原变量名>; 其中原变量名必须是一个已定义过的变量。如: int max ;
int &refmax=max;
refmax并没有重新在内存中开辟单元,只是引用 max的单元。max与refmax在内存中占用同一地址, 即同一地址两个名字。
int max ;
int &refmax=max; max=5 ; refmax=10; refmax=max+refmax;
max 5 10 20 refmax
max与re 1、引用在定义的时候要初始化。
int &refmax;
错误,没有具体的引用对象
int m=10; int &y=10; int &z;
float &t=&m;
int &x=m;
以下的声明是非法的
1、企图建立数组的引用
2、企图建立指向引用的指针
int & a[9];
int & *p;
3、企图建立引用的引用
int & &px;
引用与函数 引用的用途主要是用来作函数的参数或函数的返回值。
} void main(void) { int a=3,b=5; change(&a,&b); //实参为地址 cout<<a<<‘\t’<<b<<endl; } a 3 5 3 b 5 3 &b
}
void main(void) { int a=3,b=5;
change(a,b); //实参为变量
cout<<a<<‘\t’<<b<<endl; }
紧接着定 义变量
max是已定义过的变量
int &refmax=max;
2、对引用的操作就是对被引用的变量的操作。
3、 引用类型变量的初始化值不能是一个常数。 如:int &ref1 = 5; // 是错误的。 int &ref=i;
4、引用同变量一样有地址,可以对其地址进行 操作,即将其地址赋给一指针。 int a, *p;
void f1( int *px) { *px+=10;}
void f2(int &xx) { void main(void) { int x=0; cout<<"x="<<x<<endl; f1(&x); cout<<"x="<<x<<endl; f2(x); cout<<"x="<<x<<endl; x=0 x=10 x=20 xx+=10;}
char sex;
char addr[30];
};
分号不能少
定义结构体类型变量的方法 一、先定义结构体类型再定义变量名
struct student { int num; 结构体类型只是一种数据 char name[20]; 类型,不占内存空间,只 char sex; 有定义结构体类型变量时 int age; 才开辟内存空间。 float score; char addr[30]; }; struct student student1, student2;
t
3
}
输出: 5
3
引用作为形参,实参是变量而不是地址,这与指针变量作 形参为指针变量 形参不一样。
形参为整型引用 void change(int *x, int *y) { int t;
void change(int &x, int &y)
{ int t; t=x; x=y; y=z;
t=*x; *x=*y; *y=z;
引用作为函数的形参,实际上是在被调函数中对实参进行操作。 void change(int &x, int &y)//x,y是实参a,b的别名 { int t; t=x; x=y; y=z; } void main(void) a x 3 5 b y 5 3
{ int a=3,b=5;
change(a,b); //实参为变量 cout<<a<<‘\t’<<b<<endl;
&是变量的引用 int &m=a; p=&m; &是变量的地址 p &m
a
m
10
*p=10;
当&a的前面有类型符时 (如int &a),它必然是 对引用的声明;如果前面
无类型符(如cout<<&a), 则是取变量的地址。
指针与引用的区别:
1、指针是通过地址间接访问某个变量,而引用是 通过别名直接访问某个变量。 2、引用必须初始化,而一旦被初始化后不得再作 为其它变量的别名。
结构体类型名 变量1 变量2
# define STUDENT struct student STUDENT { int num; char name[20]; char sex; int age; 凡是STUDENT的地
方都用struct student
机械替换。
float score;
char addr[30];