C语言指针学习探讨

本文介绍了C语言中的核心概念——指针,从计算机内存编号和内存单元大小开始,解释了32位系统中内存地址的计算方式。接着探讨了变量在内存中的地址表示,通过int类型的变量a举例说明指针变量的定义和使用,如`int *p = &a;`。文章还揭示了如何计算内存总容量,并解释了指针在内存管理中的作用。
摘要由CSDN通过智能技术生成

今天的课程,讲了C语言里的重头戏之一:指针,开始学习C语言之前就对这指针略有耳闻,但都未进行了解,能让我在没开始学习的阶段就听到的词,让我一直期待着学习指针,现在有机会接触学习,可谓是如愿以偿,话不多说,接下来分享自己的学到的知识。

首先,提出两个问题:1、计算机中内存都是怎么编号的?2、计算机每个内存单元的空间有多大?抱着对这两个问题的疑问跟着流程进行下去;众所周知,计算机常用的操作系统有32位和64位,拿32位操作系统来说,每一位就有一根地址线,因此32位操作系统的计算机就有32根地址线,而这些地址线又都是物理线,物理线肯定得通电嘛,所以就有1(正电)/0(负电),每根地址线都有正电或负电的可能性,所以就把电信号转换成了数字信号,也就是二进制序列,32根地址线的它们的电信号转化成数字信号也就是32个二进制位,而将他们的所有的可能性罗列出来,足足有2^32种,而这些二进制序列都可以作为计算机内存的编号,这些编号又称为内存单元的地址,所以32位的计算机就有2^32个内存单元,开始C语言课程的第一天我们就大概了解了计算机的内存单位,最小的单位是bit(比特位),后面依次变大就是byte(字节),KB,MB,GB,TB,PB……如果一个内存单元的空间大小是一个bit,那假设存储一个字符(char)类型就要用8个内存单元,就一个字符就用八个空间来存储,想想也觉得太奇怪了,所以最终经过平衡决定了,计算机一个内存单元的空间大小为1byte,这样存储char类型的话就只需要1个内存单元就可以了,那么接下来就来归纳一下,32位系统有2^32个内存单元,1个内存单元的存储空间是1字节,那经过计算得出,2^32个内存单元的空间大小是4GB,上网查了一下,32位计算机的内存刚好就是4个G的,一直用着的计算机,听着他们说的4G、8G、16G的内存原来是这样计算得来的,又一个知识点get,好了,这样两个问题的答案就得到了。

那么接着往下的学习,计算机一个变量在内存中的地址是以怎样的形式进行呈现的呢?拿int整型定义一个变量a进行举例,将整型a定义为0,因为变量a定义的是整型,所以占用空间为四个字节,这四个字节每个字节都有一个地址,系统规定一个内存单元是一个字节,a变量就存储空间占用了四个内存单元,虽然给变量a每个字节都分配了一个地址,但当我们进行&a的操作的时候,拿到的就只是四个字节中第一个字节的地址;当定义变量a时存储的地址,也需要给个空间将这些地址存放起来,假设这个存放地址的空间命名为p,在C语言中p叫做指针变量,指针变量p定义的类型取决于里存放变量地址的那个变量的类型,将变量a的地址存放到指针变量p里,书写方式时int *p=&a;

指针变量的书写方式就是在变量名前面加个*,*p就是一个指针变量;因为遵守作息安排只能写到这里。文章中如果有描述错误的地方,还请指出,我会虚心的接受和学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值