【C语言学习笔记】指针

用来存放一个变量地址的变量就叫指针变量。指针变量也是有类型约束的,一般什么类型的指针指向什么类型的变量。

指针之所以叫变量,是因为它里面所存放的变量的地址也是不断变化的,指针是可以移动的。

定义格式:

类型名 *指针变量名  eg:int *pi;

指针的作用都是一样的,都是用来存放地址的,为什么还要区分类型,因为指针变量只能存放特定定义类型的变量。

让指针存放一个变量的地址:

pi=&a;

&叫取址符,*叫指针运算符。

还有一种能存放指针变量地址的对象,他就是指向指针的指针。eg:int **p ; p=&s

给指针变量赋值:

1、通过求地址运算符(&)获得地址值

int k=1,*q,*p;

赋值语句为:q=&k;则把k的地址赋予了q,可以说变量q指向了变量k

注意:1、&只能用于变量和数组,不可以用于表达式、常量和被说明为register的变量,因此:q=&k+1 q=&(k+1)都是错误的。

          2、&必须放在运算对象的左边,而且运算对象的类型必须与指针变量的类型相同。

2、通过指针变量获得地址值

可以通过赋值运算,把一个指针变量中的地址赋予另一个指针变量,从而使这两个指针指向同一个地址。

int k,*q,*p;   q=&k ;p=q;

也就是说指针变量q和p都指向了变量k.

注意:当进行赋值运算时,赋值号两边的指针变量的基类型必须相同。

3、给指针变量赋空值

除了给指针变量赋地址值外,还可以给指针变量赋NULL值 。

eg:p=NULL;

当之真理上述语句之后,称p为空指针,NULL的代码值为0,等价于p='';p=0;

注意:p并不是指向地址为0的存储单元,而是一个有确定的值“空” int *p  ; int *p=null;

对指针变量的操作:

1、通过指针来引用一个存储单元

C语言提供了一个称作“间接访问运算符”,的单目运算符

原文地址:https://www.cnblogs.com/dream-to-pku/p/11378908.html