初始c语言(指针)

前言:

内容:

昨天学的指针,今天复习指针,然后学习结构体

复习:

什么是指针,指针就是地址, 

int* p = &a;    p就是指针变量,但是口语一般成为指针

int 说明p指向的对象是int类型的,*说明p是指针变量

int *p = &a;   这个写法也是正确的,

然后这样写

int *p ,*q, *w;    就是定义三个指针变量

但是这样写的话

int* p, q, w;   就定义p为指针变量,然后q和w是整型变量

为啥需要指针?

就是去找一个人的位置,但是不知道他具体的位置,如果要找他玩,就不知道他在哪个位置,但是知道大概的位置,找的话就费时间,如果存起来他的地址,找他的话就速度很快

但是我不知到找到他的具体位置的实际用途

电脑就是32位地址,就是32个比特,但是他有2的32次方的排列顺序

他最多支持的就是4g的地址

2的32次方等于4gb(不是很理解,不知道先记得)

理解了,

2的32次方,就是4gb的地址,

一个地址能管理1个字节的空间,2的32次方,就能管理4gb的内存

内存会划分为一个个内存单元,每个内存单元会化为一个内存编号

一个内存单元是一个字节

int类型的变量

然后就是int类型的指针,由于int类型是向内存申请4个字节的空间,所以就是有四个地址,但是实际上存的

int *p = &a;     //这里存的就是第一个地址,通过第一个地址,可以找到其他的三个字节的空间,可以修改的变量


int main()
{
    int a = 10;

    int * p = &a;

    *p = 20; //解引用操作符
}

关于指针变量的大小,实际上就是地址的大小,跟创建变量的类型(int、char)无关,因为之后指针就是地址,他存的就是地址,所以是按地址的大小分配空间的

第一个问题,为什么前面说一个一个地址是1个字节,这里却说一个地址要四个字节?

因为之前指的是内存的最小单元是1个字节,然后一个地址能管理一个字节。

一个地址就是,从0到2的32次方里面选的

这里指的是地址如果存到内存当中,那么需要计算地址的大小,地址的大小就是关于内存的多少位,32位的电脑,就是2的32个比特位,8个比特位是一个字节,那么计算起来

32个比特位是?????4个字节

那么为啥能管理4gb的内存呢????

00000000 00000000 00000000 00000001    这就相当于是一个地址,这样子能管理一个字节的话,他如果存到内存中,就需要占4个字节,因为有32个比特位,

2的32次方能的排列顺序有4294967296种排序方法,也就是能管理4294967296个字节,也就是能管理4gb的内存

(我的理解是这样,如有错误,感谢评论指出)

32位电脑就是有32跟地址线(32个内存单元)

0/1的电信号,

00000000000000000000000000000000

2^32=4gb内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值