C语言第十一天自学!----深入探究指针上

 What is 指针

1. 指针是内存中一个最小单元的编号,也就是地址

2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量

总结:指针就是地址,口语中说的指针通常指的是指针变量。 

指针变量

可以通过&(取地址操作符)取出变量的内存真实地址,把地址可以存放到一个变量中,这个变量就是指针变量

那么一个地址多大呢

百度给出答案一个字节给一个对应的地址

对于32位的机器,假设有32根地址线,那么假设每根地址线在寻址的时候产生高电平(高电压)和低电 平(低电压)就是(1或者0); 那么32根地址线产生的地址就会是: 

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000001

...

11111111 11111111 11111111 11111111 

这里就有2的32次方个地址。

----在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。

---那如果在64位机器上,如果有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。 

综上,指针是用来存放地址的,地址是唯一标示一块地址空间的。

          指针的大小在32位平台是4个字节,在64位平台是8个字节。 

既然是变量我们怎么定义取出呢?这里就使用了int*这个关键字来定义 

#include <stdio.h>
 int main()
 {
 int a = 10;//在内存中开辟一块空间
int *p = &a;//取出它的地址,可以使用&操作符。
//a变量占用4个字节的空间,这里是将a的4个字节的第一个字节的地址存放在p变量
中,p就是一个之指针变量。
return 0;
 }

 既然变量有好多类型那么对应的指针变量一样有很多类型

这里可以推断出,指针的定义方式是: type + * 

---char*  类型的指针是为了存放char 类型变量的地址。

---short* 类型的指针是为了存放 short 类型变量的地址。

---int*     类型的指针是为了存放int 类型变量的地址。

#include <stdio.h>
 int main()
 {
 int n = 0x11223344;
 char *pc = (char *)&n;
 int *pi = &n;
 *pc = 0;   
*pi = 0;   
return 0;
 }

总结: 指针的类型决定了,指针的类型决定了指针向前或者向后走一步有多大(距离)也就是说对指针解引用的时候有多大的权限(能操作几个字节)。

比如: char* 的指针解引用就只能访问一个字节,而int* 的指针的解引用就能访问四个字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值