第四章指针与引用的使用
一、变量与指针
1.指针的定义
数据类型 *变量名——指针变量 int i; int *point=&i; &a——表示变量a的地址,*p——p所指向的单元
2.指针做参数
void swap(int *p1,int *p2){
int temp;
temp=*p1;
*p1 = *p2;
*p1=temp;
}
二、数组与指针
int a[10];int *p;
p = &a[0];
p=a;
*(a+i)==*(p+i)
定义函数时,传递数组实参时,可以直接将数组名传递过去。 即 void select_sort(int array[],int n)等价于void select_sort(int *array,int n)
三、字符串、函数与指针
char *str;
str = "I love China";
//指向函数的指针变量
int max(int x,int y);
int (*p)(int x,int y);
p = max;
p(a,b);
//指针函数的定义
int *a(int x,int t);
指向函数的指针变量:函数类型(* 变量名)(函数参数表)
四、指针数组和指向指针的变量
1.指针变量
指针数组的定义:类型名 *数组名[数组长度]——其元素全部为指针数据的类型。 p = *(name+i++):先求*(name+i)的值,然后赋值给p,再将i+1。 void print(char *name[],int n)
2.指向指针的变量
char *name={basic,for,c++,pascal,cobol} char ***p;则*p是指c++,****p是指c
五、const指针
1.指向变量的常指针
不允许通过指针变量来改变它所指向的对象的值——const 类型名 *指针变量名 类型名 * const 指针变量名——不允许改变指针指向 强制转化——p1 = (int*)p2
六、引用
int a;int &b = a;——b是a的别名 引用不能重复使用,不能建立引用的引用,没有引用的指针,但是有引用的地址。 引用实质是开辟一个新空间,在其中存放值的地址
void swap(int &a,int&b){
int temp;
temp = a;
a=b;
b=temp;
}
第五章用户自定义数据类型
一、结构体类型
定义——struct 结构体类型名{成员表}变量1,变量2;创建了两个结构体类型 初始化——在定义变量1 ={‘1001’,‘yige’}或者在后面初始化 引用——结构体变量名.成员名或者(*p).成员名或者p->成员名 指向结构体变量的指针——结构体类型名 *p=结构体变量名 sturct *next;
二、动态分配存储空间
new 类型 [初值]——new int(100)或者是p = new Student; delete 指针变量或者delete [] 指针变量
三、枚举类型及typedef类型
enum 枚举类型名 {枚举常量表}并分别依次赋予0,1,2,3,… typedef int INTEGER 则int i==INTEGER i; typedef struct 结构体类型名{成员表}Date Date是结构体类型名·——Date ditrhday typedef int NUM[100],NUM n;——定义n为包含100个整型元素的数组 typedef char *STRING;STRING p,s[10]——声明string为char *类型