3

不到一把王者的时间带你初始C语言指针(C语言指针的由来)

 2 years ago
source link: https://blog.csdn.net/weixin_53811859/article/details/121942462
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在这里插入图片描述
在这里插入图片描述

对于许多编程新手的xdm初次接触C语言指针,我相信会存在着许许多多的困难,因为C语言指针这块的难度非常地大,加上又没有很奥利给的学习资源来引领xdm学习,极易导致xdmC语言的学习直接从入门到放弃,为此我接下来将会出一系列关于C语言指针这块知识点讲解的文章,真诚地希望能帮助大家逐步拿捏C语言指针这块知识点,大家一起共同进步!一个人可以走得很快,但是一群人才能走得更远,楼主不才,若接下来关于C语言指针这块知识点的讲解有错误,还希望大佬们指出,非常感谢!

接下来我将带领xdm手把手拿捏初始C语言指针部分,通过初始C语言指针这部分的讲解,你将知道C语言指针的由来、C语言的指针如何定义、C语言指针所占内存空间的大小等知识点,那么xdm请开始收看我的表演吧!

初始C语言指针

第一部分:C语言指针的由来

我国地域辽阔,国家为了管理好这么多的领土面积,将其划分为各个省份,如:广东省;省份又继续将其划分为各个市县,如:广东省普宁市;市县又划分为各个村镇,如:广东省揭阳市洪阳镇…这样子就可以明确确定每块国土的具体位置,若干年后的某天,当自己写代码有钱的时候,就可以直接去自己想去的地方旅游了,而不会出现老鼠走迷宫到处乱窜的现象。

一个五星级酒店,要想管理好酒店里的每个房间,会将其每个房间都编上号,这样当顾客来预订酒店房间的时候,酒店的前台服务员只需要告诉房间号,顾客就可以准确地找到在哪个房间…

…由此引申为我们计算机中的内存,计算机中的内存同样也是非常巨大的,要知道我们所有程序的运行都是在内存中进行,那么如何有效地分配管理这些内存呢?我们是不是可以将其分成一块一块的区域,然后将其每块内存区域都贴上一个编号,明确好每块内存空间的位置来进行管理呢?

没错,我们计算机的设计者那些巨佬们就是这样设计我们计算机中的内存的,将计算机的每块内存区域分成一个又一个的内存单元,并给我们每个内存单元都标记上编号(这里的编号在我们C语言里面就叫做地址,也就是标记上了地址,就能确定每个内存单元的具体位置),当我们知道每个内存单元的地址的时候,这样子我们运行程序的时候就可以明确地知道,我们到底是使用那些内存单元了。(好比你双十一或者双十二在某宝上面购物一样,你必须得写好你家的地址,人家快递公司才能准确无误地将快递包裹送到你的手上)

那么,接下来又有新的问题来了,我们每个内存单元所占的内存空间大小是多大呢?在这之前,我需要先介绍下计算机中的内存单位,如下图:
在这里插入图片描述

我们需要清楚地知道一个char类型变量所占的内存空间是1byte,也就是8个bit,一个int类型变量所占的内存空间是4个byte,也就是32个bit(见附1,有计算char类型和int类型的变量所占空间的大小)。所以如果我们以1个bit作为我们每个内存单元的大小,就显得不太合适了,1个int类型变量就占32个bit,那么就是32个内存单元,对应的就是32个地址,显然不太合适,太细化;而1kb=1024byte,如果以1kb作为每个内存单元的大小,显然也不太合适,太大了,好比你家1000亩地,只养了一只鸡一样,1kb的内存空间只放一个char类型或者int类型的变量显然也不太合适,所以最终确定每个内存单元是1byte最合适,不大不小刚刚好!

注意sizeof这个操作符计算出的结果内存单位是byte
在这里插入图片描述

附1代码提取:

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

int main()
{
	//sizeof计算出来的结果的内存单位是byte
	int revolve = 6;
	char individual = 'w';
	printf("%d\n%d\n", sizeof(revolve), sizeof(individual));
	return 0;
}

下章链接:

指针定义部分

楼主不才,不喜勿喷,若有错误或需要改进的地方,非常感谢你的指出,我会积极学习采纳。谢谢家人们一直以来的支持和鼓励,我会继续努力再接再励创作出更多优质的文章来回报家人们的。编程爱好的xdm,若有编程学习方面的问题可以私信我一同探讨(我尽力帮),毕竟“众人拾柴火焰高”,大家一起交流学习,共同进步!
在这里插入图片描述

2021.12.14


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK