C语言:指针

1.地址和指针的概念

指针是用来装地址的数据类型;

一个变量的地址称为该变量的“指针”。例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。指针变量的值(即指针变量中存放的值)是地址(即指针)。例如,可以说变量i的指针是2000,而不能说i的指针变量是2000。指针是一个地址,而指针变量是存放地址的变量。

2.指针定义

指针定义的一般规则:基类型   *指针变量名,指针变量只能装对应的基类型的类型,如:int *p,只能装int型;

*  是指针运算符,在int  *p时,里面的 * 是类型说明符;

int i = 10;

int *p;

p = &i;           //指向i

*p = 100;    //*p就是i本身

此时,i的值变成100。

通过指针的访问叫作间接访问,指针的大部分作业是在被调函数中修改主调函数的参数;

被调函数中用 *变量名赋值;

主调函数中用 &变量名赋值;

野指针:定义*p时,没有初始化,此时*p是随机地址,编译不报错,但是运行程序会崩溃;

空指针:定义*p时,p = NULL;空指针是一种状态,表示当前指针不能访问;

指针:

(1)通过指针变量中的值到内存空间中定位;

(2)从定位处开始向后偏移sizeof(基类型);

(3)将偏移好的那部分内存空间当做一个基类型变量看;

指针的注意事项:

(1)保存和用地址时,基类型必须相同;

(2)确定指针保存的是什么的地址;

3.指针的使用

int i = 1;

char *p = (char *)&i;    //强制类型转换

可以用这个来判断系统是小端还是大端,如果*p = 1;说明是小端,如果*p = 0;说明是大端;

当用数组时,a[ i ] <=> *(a + i),下标写法改成*(a + i),a[ 0 ] = *a;

传参时传的是(a,len);

* 和 &两个在一起时互相抵消,取地址,如:*&p和&*p一样都是取p的地址;

int i;

int *p;

p = & i;               //  *&i <=> *p <=> i

*p++和++*p都表示加指针所指的变量;

*++p加的是指针;


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值