目录
一、关键字
(一)const(恒定不变)
1.修饰只读变量:有不可变性
const int max = 10;
int array[max]; //以前定义数组是不能用变量,加了const之后可以
未const之前,变量在可读可写区,加了const之后区域未变,但变成了可读。
const修饰的只读变量必须在定义的同时初始化
2.修饰一般变量:简单类型的只读变量,const可在前,也可在后
int const i = 2;
或
const int i = 2;
3.修饰指针
const int * p; // p可变,p指向的对象不可变
int const * p; // p可变,p指向的对象不可变
int * const p; // p不可变,p指向的对象可变
const int * const p; //指针p和p指向的对象都不可变
这里给出一个记忆和理解的方法:
先忽略类型名(编译器解析的时候也是忽略类型名),我们看const离哪个近,离谁近就修饰谁。
const (int) *p //const 修饰*p,p是指针,*p是指针指向的对象,不可变。
(int) const * p; //const 修饰*p,p是指针,*p是指针指向的对象,不可变。
(int) * const p; //const 修饰p,p不可变,p指向的对象可变
const (int)* const p // 前一个const修饰*p,后一个const修饰p,指针p和p指向的对象都不可变
4.修饰数组
定义或说明一个只读数组可采用如下格式:
int const a[5] = {1,2,3,4,5};
或
const int a[5] = {1,2,3,4,5}
5.修饰函数的参数
不希望这个参数值在函数体内被意外改变时使用
例如:
void Fun(const int *p);
告诉编译器*p在函数体中不能改变,从而防止了使用者的一些无意的或错误的修改。
(二)结构体strcut
1、结构体概念:存放一组不同类型的数据。
- 结构体的定义形式为:
struct 结构体名{
构体所包含的变量或数组
};
- 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
stu 为结构体名,它包含了 5 个成员,分别是 name、num、age、group、score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。注意大括号后面的分号;不能少,这是一条完整的语句。结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类