《c和指针》摘录4—指针

内存和地址

计算机的内存由数以亿计的位(bit)组成,每个位可以容纳0或1。由于一个位能表示的值范围太有限,所以单独的用处不大,通常许多位合成一组作为一个单位,这样就可以存储范围比较大的值。

&运算符:求变量地址

指针变量 :专门存放变量的地址的变量

定义指针变量

数据类型 *变量名

int *a;

* 指针变量必须初始化再使用

int *a;

....

*a = 12;

这个声明创建了一个名叫 a 的指针变量,后面那条赋值语句把12存储在a所指向的内存位置。但究竟a指向哪里呢?

我们只是声明了这个变量,但未对它进行初始化。所有我们无法预测12这个值将存储于什么地方。从这一点来看,指针变量和其他变量并无区别。如果变量是静态,它会被初始化为0,但如果变量是自动的,它就根本不会被初始化。

* 指针变量须指向已定义的同类型变量


直接访问与间接访问

直接访问:通过变量访问变量值

间接访问:通过存放变量地址的指针变量去访问


指针和指向数组的指针

数组名是表示数组首地址的地址常量


指针运算

.指针的算术运算

(1)指针 +/- 整数

标准定义这种形式只能用于指向数组中的某个元素的指针。

结果仍然是指针。

int a[10] = {1, 6, 7, 7};

int *p1 = a;

int *p2 = p1+3;

(2) 指针 - 指针

只有当这两个指针指向同一个数组中的元素时,才允许从一个指针减去另一个指针。

int set[6] = {1,2,3,4,5,6};

int *p1=set, *p2 = set+5;

int t= p2 - p1;

t的值是5-0=5;

.指针的关系运算

对指针执行关系运算是有限制,只有以下的几个

<, <=,>, >=

前提:它们都指向同一个数组的元素













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值