指针变量概念:变量来存放变量的地址,这种用来存放地址的变量称为指针变量。
定义指针变量:
基类型 *指针变量名1,…,*指针变量名m;
eg : int *p1;
float *p2;
char *p3,*p4;
注意!:C系统会为所有的指针变量分配同样大小的存储单元。每一个指针变量都分配4字节的存储单元。因此,为指针变量分配的存储单元的大小与基类型无关。
定义变量指定基类型的作用:
1.基类型规定了指针变量中可存放哪类变量的地址
2.指针变量参与运算时,计算结果依赖于基类型
指针变量的初始化
其他变量一样,在定义指针变量时可为它设置初值。
int i=5,*p=&i;
此时,我们访问i的方式有两种:
⑴通过变量名i来访问变量i;(直接访问)
⑵利用*p来访问变量i。(间接访问)
eg、通过指针变量访问整型变量。
#include<stdio.h>
intmain()
{
int m=3,n=5;
int *p1,*p2;
p1=&m;
p2=&n;
printf("%d%d\n",m,n);
printf("%d%d\n",*p1,*p2);
return0;
}
注意
⑴取地址运算符&的一般形式为:
&变量
它用来获取变量的地址,可将该地
址赋值给同类型的指针变量。
①p2=&m;(√) ②n=&m;(×)
⑵指针运算符*的一般形式为:
*Addr
①*(&n)(√) ②*p2(√) ③*n(×)
⑶&与*的优先级相同,结合方向是自右向左。
①*&n(√) ②&*n(×)
⑷要正确区分指针描述符与指针运算符。
inta,*p=&a; //*为指针描述符
*p=3; //*为指针运算符
⑸只有在p指向某个变量后,才能使用*p。