提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
在指针学习过程中我发现很多人一提起指针就会说这是c语言最难的一部分,诚然指针的学习是一个抽象的过程,但从类型和“内存”视角来看的话普通小白学会指针也用不了很多时间。大家不必“闻指针色变!”。下面从我的学习经验总结了一些指针通俗易懂的解释和学习经验,希望对正在学习指针的你有所帮助。
一、指针是什么?
指针也就是 内存地址 ,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的 存储空间 长度也不同。看到这里你可能有些蒙但看下边我慢慢解释。
二、指针类型&内存
1.类型
指针的类型有char* short* int * float*等等。大家在初学时看到这些可能会和char short int float这些类型联系起来;他们之间没有必然的联系,但是大家在学习指针的时候可以配合以前学过的数据类型做理解。 我们都知道char的大小是一个字节 int 类型的大小是4个字节 short 2个字节 float是四个字节而这些数据类型都是用来存放数据的 int存放整型数据 float存放的是浮点型也就是小数,而我们学习的指针同样也是存放数据的,指针存放的是地址,而地址是什莫鬼东西呢,“地址”他正如他的名字一样就是我们生活中的地址,在生活中我们可以凭借真正的地址找到我们居住的家,无论我们在哪里我们总可以根据地址精确的找到一个地方,而我们学习的指针和他也是一样的原理。
在说下一个知识点前请先移步到第二个标题第一个图了解内存相关概念。
看到这里我们就可以详谈一下指针类型了我们在下方看到计算机的地址是一串二进制序列,他们的长度都相等,所以指针类型的大小都是相同的都是四个字节。但是他们大小都相同了为什么还会有char* int*这些不同的东西呢,答案就是访问的字节数不同char*的指针解引用只能访问1个字节的空间,而int*类型的指针解引用可以访问4个字节的空间,这才是指针间的不同。而这也导致了指针加1向后指向距离的不同。char*加一向后跳一个字节,而int*跳4个字节
指针访问其所指向的空间依靠*来完成。不同类型的指针访问的大小也不相同,比如我们可以做一个小测试让int a=0x11223344 然后让char*的指针访问 即char*p=(char*)&a; 然后让*p=0;然后打印a他的结果就是 :
2.内存
内存这个词我相信大家都不陌生,比如大家在买手机和电脑的时候说的内存就是这个。为了让大家更好的理解指针我们通过图片给大家介绍一下。
在计算机中内存被分割为一个字节一个字节的小块而每个字节都对应一个地址这样我们就可以通过地址找到内存空间访问其中的数据了。
总结
这里我们简单介绍了一下指针的类型希望对您有所帮助,内容有误或建议我会积极采纳。