十一月十六日记录。
指针相关概念
- 地址与指针
学指针必须先对内存地址有一个概念。
系统的内存就好比带有编号的小房间,如果想使用内存就需获得房间的编号。这个编号就是内存的地址。
当你定义一个变量时,该变量会获得一个地址,通过访问该地址可以找到对应的变量,此时这个变量的地址称为该变量的指针。
- 变量与指针
当我们把第一个变量i的地址放到第二个变量中,第二个变量就成为一个指针变量,通常用p表示,此时变量p就“指向”了变量i。
- 指针变量
如果有一个变量专门用来存放另一个变量的地址,这个变量就叫做指针变量。
1、定义一个指针变量
类型说明 * 变量名
int * p
指针定义后必须进行赋值,否则不能使用。
不同于普通变量,指针变量只能赋予地址,而不是数值。
我们用取地址运算符&来获得一个变量的地址,并将其赋给指针变量。
2、指针变量的赋值
& 变量名
int a = 0;
int * p = &a;
或者我们也可以这么写
int a = 0;
int * p;
p = &a;
这时候赋值就不再需要*号。
注意我们不能将一个数赋值给指针变量。
3、指针变量的引用
引用指针变量是对变量进行间接访问的一种形式。
*指针变量
举个例子
#include<stdio.h>
int main()
{
int * p,q;
printf("请输入:\n");
scanf("%d",&q);
p = &q;
printf("输入为:\n");
printf("%d\n",*p);
return 0;
}
4、“&”和“*”运算符
&是一个返回操作数地址的运算符,叫做取地址运算符。
*是单目运算符,叫做指针运算符,作用是返回指定地址内变量的值。
二者运算符优先级相同,按照从右到左方向结合。
p = &i;
q = *p;
- 指针的自加自减操作
不同于普通变量的自加自减,指针变量的自加自减是地址的自加自减,比如一个基本整型指针变量p进行++操作,则p的值增加4(4个字节)。
指针都安装它所指向的数据类型的直接长度进行自加自减,例如定义为短整型,则自加后p的值增加2(2个字节)。
数组与指针
todo