C 指针(定义 指针,NULL 指针,void 指针,间接运算符 *,指针操作)


指针(pointer) 是一个 内存地址变量


1、定义 指针

(1)

int *p = &a;	定义指针变量 p, *p 与 a 相同
*p = 10;   		指针p所指向的变量, 即a

(2)

&*p 与 &a 相同, 是地址
*&a 与 a  相同, 是变量

(3)

(*p)++  等价于 a++, 将 p 所指向的变量值加1
*p++    等价于 *(p++), 先取 *p,然后 p 自加1, 此时p不再指向a

创建一个指针时,系统只分配了储存指针本身的内存,并未分配储存数据的内存。


2、NULL 指针

在变量声明的时候,如果没有确切的地址可以赋值,把指针变量赋值NULL是一个良好的编程习惯。值为 NULL 的指针被称为空指针

NULL指针是一个定义在标准库中的值为0常量


3、void 指针


4、间接运算符 *

假设已知 ptr 指向 bah,如下所示:

ptr = &bah;

使用间接运算符*( indirection operator ) 找出储存在bah中的值,该运算符有时也称为解引用运算符( dereferencing operator )。

千万不要解引用未初始化的指针。

5、指针操作

(1)递增指针、递减指针
(2)指针 减去一个整数
(3)指针求差:两个相同类型的指针相减,表示它们之间相隔的数组元素的个数

#include <stdio.h>
int main()
{
	int a[2], *p, *q;
	p = a;
	q = p + 1;
	printf("%d\n", q - p);			//1, 指针p和q之间元素的个数.
	printf("%d\n", (int)q - (int)p);//4, 指针p和q之间的字节数, (int)q是地址值.
	return 0;
}

(4)p < q:两个相同类型指针可以用 关系运算符 比较大小
(5)其他操作都是 非法 的:指针相加、相乘和相除,或指针加上和减去一个浮点数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值