C语言疑难杂症-指针

C语言疑难杂症-指针

\\\插播一条:文章末尾有惊喜哟~///

进修阶段:高中信竞、大学编程。

前置知识:二进制与十六进制,C语言根底,数组。

指针初学可能比较难了解,我这篇文章尽量用通俗易懂的方式来讲解。

1.指针概述

为什么有指针这个东西?由于指针很贴近计算机内部的实际工作原理,与内存实际的寻址方式类似。C语言能够说是高级语言中最贴近机器的语言,而像Python、JavaScript这种更亲和于人类的语言与机器的关系则比较远了,甚至它们自身可能还是用C语言写出来的呢。

指针能够形象地比喻为在内存中定位的导航员。内存那么大,怎么知道我须要的东西存在哪里呢?能够让指针来记录与导航。我们先来了解一下内存。

2.预备知识

2.1内存

钻研过组装机、电脑配件的话,一定知道内存条这个东西。此时这个时代,一台家用电脑的内存一般是2GB、4GB、8GB、16GB、32GB、64GB等等。

把CPU比作干活的人,则内存就相当于工作台。CPU在跑的程序以及很多相关数据都存在内存内,这就相当于人在干活时要把相关资料放在工作台上使用。

内存能够看成是一个宏大的数组,我这里记为

memory[0..n]

memory的每一个单元存1B=8bit,memory[0]就是内存的第一个单元。这个中括号里面的数,即数组下标,被称为内存地址,简称为地址。我确定了一个地址,也就相当于确定了内存中的一个单元。

通常,我们说的32位机器,意思就是地址是32bit的,最大支持的内存是

memory[0x00000000..0xFFFFFFFF]

最小地址是0,最大地址是0xFFFFFFFF=2^32-1,最大支持

也就是说32位机器理论上最大支持4GB的内存,这就是它渐渐被淘汰的理由。

而64位机器理论上最大支持的内存是

这个量级远大于目前的需求,因此128位机器在相当长的时长内不会出现。

2.2变量与数据类型

C语言有很多数据类型,不同的数据类型在内存中的占用空间和存储格式也不一样。不同数据类型的存储格式比较复杂,这里不详述。我只谈谈不同的占用空间。

一个变量在内存中占用都是不间断空间,记T类型的变量在内存中占用sizeof(T)字节的空间。当我声明一个T类型的变量a时,内存会寻找不间断且可用的sizeof(T)个单元,把它们分配给变量a,假如说是memory[100..103]这4B的空间。此后我对变量a进行读写,也就相当于对memory[100..103]这4B的空间进行读写。

某些数据类型的占用空间:short短整形占用2B,int整形占用4B;float浮点形占用4B,double双浮点型占用8B;char字符型占用1B.

3.指针

指针是一种特殊的数据类型,指针类型的变量应存储的是内存地址。在32位机

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值