1.数组
1.一维数组
一位数组的定义:
//定义长度为10,即a[0] - a[9],内容格式为int的数组
int array[10];
二位数组的定义:
//定义3行4列,内容格式为int的二维数组
int array[3][4];
2.函数与函数的调用
2.1子函数的定义
类型名 函数名()
{
函数体
}
以下为两个子函数定义的例子。
//定义一个返回值为int类型,函数名为max1,参数为int类型的a和b的子函数
int max1(int a, int b){
if(a > b){
return a;
}
else{
return b;
}
}
//定义一个无返回值,函数名为max2,参数为int类型的a,b,c的子函数
void max2(int a, int b, int c){
if(a > b){
c = a;
}
else{
c = b;
}
}
2.2子函数的调用
在调用函数之前,要先对函数进行声明。
//声明两种max函数
int max1(int, int);
void max2(int, int, int);
之后才可以使用子函数。
//使用两个子函数
int a, b, c;
c = max1(a, b);
max2(a, b, c);
3.指针
3.1基本定义
一个变量的地址称为该变量的“指针”。指针变量属于一种特殊的变量,用于存放地址。
在定义指针变量时必须指定基类型,因为不同类型的数据占用字节数和存放方式不同,必须知道该数据的类型,才能按存储单元的长度以及数据的存储形式正确地取出该数据。
//定义一个int类型变量
int a;
//定义一个指向int类型数据的指针变量p
int *p;
//将指针p的值改为a的地址,即指针p指向a
p = &a;
//也可以这样写
*p = a;
//同理,定义一个指向float型变量的指针p_float
float *p_float;
指针变量前面的”*“标识该变量的类型为指针型变量,指针变量名为p,当p指向a时,*p和a为等价关系。
3.2指针变量作为函数参数
//eg1
//定义一个返回值为int,参数为指针的函数
int max1(int *p1, int *p2){
if(*p1 > *p2){
return *p1;
}
else{
return *p2;
}
}
//调用该函数
int max1(int *, int *);
int a, *p1, *p2;
a = max1(p1, p2); //参数为指针,因此这里不需要加*
//eg2
//定义一个返回值为int指针,参数为指针的函数
int *max2(int *p1, int *p2){
if(*p1 > *p2){
return p1;
}
else{
return p2;
}
}
//调用该函数
int *max2(int *, int *);
int *pmax, *p1, *p2;
pmax = max2(p1, p2);
//eg3
//定义一个void函数,参数为指向一维数组的指针
void AddArray(int *p){
for(int i = 0; i < 10; i++){
*(p + i) = i;
}
}
//调用该函数
void AddArray(int *);
int array[10];
int *p = array[0]; //将p指向数组的起始位
AddArray(p);
//eg4
//定义一个void函数,参数为指向二维数组的指针
void AddArray(int *p){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 4; j++){
*(p + 4*i + j) = 4*i + j;
}
}
}
//调用该函数
void AddArray(int *);
int array[3][4];
int *p = array[0][0];
AddArray(p);
4.结构体
4.1结构体定义
结构体是由不同类型数据组成的组合型的数据结构。
//结构体的定义
struct 结构体名{
成员列表
};
//声明
类型名 成员名
//结构体成员
成员名.成员
//eg
struct Student{
char[10] name;
char sex;
int age;
float score;
};
//声明10个Student类型的变量
struct Student stu[10];
//给stu[0]赋初值
stu[0].name = "wxh";
stu[0].age = 23;
4.2 结构体指针
struct Student stu;
//声明指针pstu
struct Student *pstu;
//指针pstu指向stu
*pstu = stu;
//给*pstu赋初值
stu.name = "wxh";
(*p).age = 23;
p->score = 66.6; //这种为常用表达方法
注意:(*p).name不可以省略括号。
指向结构体数组指针同理。
5.链表
见谭浩强《C语言程序设计》P310。