九、指针
将一个变量的地址赋值给指针变量后,这个指针变量就指向了该变量
指针变量
通过地址能访问指定内存单元,所以地址指向了该内存单元。地址可以形象的被称为指针。
如果一个变量,专门用来存放另一个变量的地址,他就是指针变量
a=&b,a就是指针 完整写法: int b = 10; int *a; a = &b;
指针变量的一般形式
类型说明* 变量名
*表示该变量是一个指针变量
变量名即定义指针的变量名
类型说明表示本指针变量所指向变量的数据类型
指针变量赋值
必须定义,必须赋具体的值。没有赋值的变量不能使用
给指针变量赋值只能赋予地址,而不能赋予任何其他数据,否则引起错误
地址运算符&,表示变量的地址
&变量名;
1、在定义指针变量的同时就进行赋值
int a;/*定义一个整型变量a*/
int *p=&a;/*将a的地址赋给指针变量p*/
2、先定义指针变量在赋值
int a;/*定义一个整型变量a*/
int *p;/*定义一个整型指针变量p*/
p=&a;/*将a的地址赋给指针变量p*/
常见错误
int *p;
p=1000;
不能把一个数值赋值给指针变量
指针变量的引用
引用指针变量是对变量进行间接访问的一种形式。
含义是引用指针变量所指向的值
*指针变量
&和*运算符
&取地址运算符,返回一个操作数地址的单目运算符
*p指针运算符,返回指定的地址内的变量的值,单目运算符
*&
和&*
的区别
以以下代码做分析
int a=10;
int *p=&a;
&和*优先级相同,自右向左结合
&*p先进行*运算,*p就是10,在进行&运算,相当于取10的地址,就是变量a的地址,即指向a的指针。&*p 等效于&a,它表示的是变量a的地址。
*&a先进行&运算,&a就是取a的地址,在进行*运算,相当于取a地址的值
简单记忆,*值,&地址
指针自增自减运算
int i=1;
int *p=&i;
p++;
这里的p++不是值加1,而是地址加1,这里的1并不代表1字节,int占4个字节,故地址+4才对