内存和地址
计算机的内存由数以亿计的位(bit)组成,每个位可以容纳0或1。由于一个位能表示的值范围太有限,所以单独的用处不大,通常许多位合成一组作为一个单位,这样就可以存储范围比较大的值。
&运算符:求变量地址
指针变量 :专门存放变量的地址的变量
定义指针变量
数据类型 *变量名
int *a;
....
*a = 12;
这个声明创建了一个名叫 a 的指针变量,后面那条赋值语句把12存储在a所指向的内存位置。但究竟a指向哪里呢?
我们只是声明了这个变量,但未对它进行初始化。所有我们无法预测12这个值将存储于什么地方。从这一点来看,指针变量和其他变量并无区别。如果变量是静态,它会被初始化为0,但如果变量是自动的,它就根本不会被初始化。
直接访问与间接访问
直接访问:通过变量访问变量值
间接访问:通过存放变量地址的指针变量去访问
指针和指向数组的指针
数组名是表示数组首地址的地址常量
指针运算
.指针的算术运算
(1)指针 +/- 整数
标准定义这种形式只能用于指向数组中的某个元素的指针。
结果仍然是指针。
int a[10] = {1, 6, 7, 7};
int *p1 = a;
int *p2 = p1+3;
(2) 指针 - 指针
只有当这两个指针指向同一个数组中的元素时,才允许从一个指针减去另一个指针。
int set[6] = {1,2,3,4,5,6};
int *p1=set, *p2 = set+5;
int t= p2 - p1;t的值是5-0=5;
.指针的关系运算
对指针执行关系运算是有限制,只有以下的几个
<, <=,>, >=
前提:它们都指向同一个数组的元素