一. 指针与指针变量
1.什么是指针?
计算机会给每个变量都分配其特定的存储空间,每个存储空间的地址就是指针(例如 你到菜鸟去取快递,你手中的取件码就相当于指针,通过它你就能找到你的快递了)
2.指针变量是什么?
指针变量,它首先是一个变量,其次它与整型,浮点型等变量一样都用来存放数据。
例如:存放整数的变量是整型变量,那么存放地址(指针)的变量就是指针变量。
注意要区分指针与指针变量:
1.指针是地址。
2.指针变量用来存放地址(指针),指针变量的值是地址(指针)
3.其实我们通常写代码用的和口头上说的指针都指的是指针变量
二. 指针变量
在学会使用指针变量前,首先要知道几个符号的作用
(1)& 取地址符。&a 代表变量 a 的地址
(2)* 指针运算符。有两个作用:1. 表示指针型 2.表示指向
(3)%p 指针格式控制符;
1.定义指针变量
1.定义指针变量的一般形式为:
类型名 *指针变量名
2.指针类型
因为不同类型变量,在内存中所占的字节数和存放方式是不同的,因此指向这些变量的指针类型也不同。
例如:定义两个指针变量a1,a2
int c=100,d=200;
int*a1=&c,*a2=&d;
注意:
- 在定义指针变量时 指针运算符* 仅表示变量a1,a2是指针型变量,指针变量名是a1,a2;
- 在定义一个指针变量时,一定要给出指针变量所指变量的类型,同时对它初始化(不然指针将会变为野指针);
2.引用指针变量
引用指针变量的基本方法,就是给指针加上指针运算符*,下面用代码举例说明:
#include <stdio.h>
int main()
{
int a=1,b=2,*pa,*pb;
pa=&a;
pb=&b;
*pb=1;//将整数值赋给指针指向元素
printf("%p\n",pa);
printf("%d\n",*pa);//输出指针指向整型变量
printf("%d\n",*pb);
}
野指针
概念:指针指向的位置不可知(随机的,不正确的,没有明确限制的)
原因:1.指针未初始化,2.指针访问越界,3.指针指向的空间释放了。