题导入:
(一)变量的地址与变量的值

程序中定义的变量,系统根据它的类型给它分配一定长度的内存单元,该内存单元的起始地址即为变量的地址。该内存单元的内容就是变量的值。
(二)直接访问与间接访问
直接访问:用变量名直接从它对应的地址存取内容。

间接访问:定义一个存放地址的变量p(p的地址1500),将x的地址2200存放在变量p中,通过变量P取出地址2200,再按此地址存取其中的内容,就间接的完成了对x的存取。
当P的内容改为2202时,通过变量p取出地址2202,再按此地址,存取的就是变量y的内容。
访问变量y必须先访问变量p
p就是指针变量
p指向y

(一)指针变量的定义
格式:基类型名 *指针变量名
*:表示此变量名为指针类型,无实际意义,只是一个标号。
如:int *p; //p为指针变量,指向变量的类型为int
(二)指针变量的初始化
用 =&变量名 给指针变量赋初值
要求:此变量名已经定义,且类型与其基类型一致
int x;
int *p=&x;
可用赋值语句给指针变量赋值
float y,*p;
p=&y;
(一)指针变量的引用
直接使用其变量名
int x,*p;
p=&x;
引用指针变量所指向的变量时,用 *指针变量名
*p=5;
注意:
(1)指针变量的值与它所指向的变量的值的差别
(2)指针变量只有正确赋值后,才能通过它访问指向的变量
(二)指针变量的运算
1)& 取地址运算符
&a 取变量a的地址
2)* 指向运算符,也称间接访问运算符
*p 取指针变量p指向的变量
3)算术运算
p++ p--
p+n p-n
p1-p2
4)关系运算
p1<p2 pi>p2 p1==p2
p==0 p==NULL (是否为空指针)P!=0
以指针类型为函数的参数,作用是将变量的地址传入函数。
程序举例:
#include<stdio.h>
void swap(int *p1,int *p2)
{
int t;
t=*p1;*p1=*p2;*p2=t;
}
int main()
{
int a=5,b=3;
int *pt1=&a,*pt2=&b;
swap(pt1,pt2);
printf("a=%d,b=%d\n",a,b);
}
地址传递:是一种双向传递,形参与实参共同指向同一块内存空间

