一.指针概念。
指针就是地址,变量才有地址。
1.若定义了一个普通变量,则系统自动回分配一个内存空间给该普通变量,且该内存空间会有一个地址。
2.若定义了一个数组,则在内存中分配一段连续的内存空间给该数组,且数组名就是该数组的首地址。
格式:
&变量名
二.指针变量
1.内容变量
int x=10;
2.指针变量
指针变量:该变量存放的是每个内容变量的地址。
指针变量的定义格式:
类型名 *指针变量名,……;
例如:
int p : //p是内容变量,且p中的内容的数据类型是int型。
int *p : //p是指针变量,p中存放的是某个内容变量的地址(地址没有数据类型可言),且存放内容变量的数据类型为int型。
注意:
(1)不要理解为p存放的地址是int型。
(2)定义了一个指针变量,则必须让该指针变量有一个指向(必须给他赋初值)。
int a=10 , *p=&a;
等价于:
int a=10; //定义内容变量a,并赋值为10
int *p; //定义指针变量p,p只能存放int型内容变量的地址。
p=&a; //将内容变量a的地址赋给指针变量p。
(3)将某个内容变量的地址赋给一个指针变量,则相当于这个指针变量指向了该内容变量。
三.指针的运算符。
- 取地址运算符(&)(内容变量才可以取地址)
取某个内容变量的地址: &内容变量名
2.取内容运算符(*)(指针变量才可以取内容)
取某个指针变量所指向的内存空间的内容:*指针变量名
例如:
注意:进行赋值操作时,指针可以赋给一个指针,内容可以赋给一个内容。
四.用指针变量操作一维数组。
1.一维数组的名字(常量)就是地址,是第0个元素的地址。
int a[10]={1,2,3,4,5,6,7,8,9,0};
int *p;
p=a;//让p指向a[0]元素。
p=a+1;//让p指向a[1]元素
p=a+9;//让p指向a[9]元素