首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何学习C/C+的指针,看完你不用担心连入门都不行。

在解释指针之前,让我们了解一下:

位/字节位是计算机处理的最小单元,可以为0或1。字节= 8位(例如1011 0110)。

Word您的硬件能够处理的大小。不久前,我们曾经拥有32位(4字节)系统,现在64位(8字节)系统占主导地位。

RAMRAM是一种存储类型,它具有一定的容量,该容量受一个单词的位数限制。可以由该字长表示的最大数字,即(例如32位字的32个连续位)。

对于32位系统,上限为2 ^ 32 = 4,294,967,296(4 GB),而对于64位系统,上限为2 ^ 64 = 2 ^ 32 * 2 ^ 32 = 18,446,744,073,709,551,616(4 GB * 4 GB) 。

使用可用的存储器,您可以分配一个位置来存储数据,可以分配的最小位置是一个字节,因此地址以0x00000000开头,并以一个字节的倍数递增,一直到上限。例如,在32位系统中,您可以分配从0x00000000到0xFFFFFFFF的地址。

变量每当在C中声明变量时,该变量将具有4个属性:-地址(在RAM中的某个位置,例如0x1F301000)-类型(字符串-1个字节,整数-一个字长等)-值(包含在其中的数据RAM从地址开始,直到字节为止,具体取决于其类型)-标签(只是一个名称,以便您可以访问地址或值)

指针,最后!指针是变量!从它们具有地址,类型(指针),值和标签的意义上讲,它们与任何其他变量都没有不同。

指针的目的是指向变量,因此指针变量的值是变量的地址。指针具有地址(例如0x31E0F825),类型(指针),值(例如0x1F301000)和标签(例如ptr1)。

在C / C ++中的编译时声明变量时,您已经有足够的关于该变量的信息。地址被分配,类型,标签和值被分配。

想象一下,您想将一个声明的变量传递给一个函数,并且想要对该函数进行控制,就像您想让它重写一样。你该怎么做?您需要传递变量在内存中的位置以便可以对其进行操作,这就是为什么要通过引用(例如&x)传递变量的原因,这就是为什么传递给函数的地址会将其视为指针。

现在考虑动态分配内存存储(malloc),该存储是在运行时分配的,这意味着在程序运行后的某个时刻,将连同其地址一起分配存储。您将在哪里住那个地址?在指针中。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210301A0E57P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券