相信对大家来说,C语言中指针的学习也是相当痛苦,但是可爱熊在学习完指针的知识后对指针有了更多的认识,发现指针并不是有我们想象的那么可怕。
在说指针之前我们有个形象的比喻用来大家更好的理解指针的含义
比如说:我们出差在外,需要去预定一家五星级酒店,作为五星级酒店就应该更好的对我们提供服务,在酒店众多的房间中我们怎么样才能更好的找到相应的房间呢?这个时候酒店方为我们提供了门牌号。有了门牌号,我们就可以更加方便的找到在自己预定的房间。
int mian()
{
int n = 0;
int* p = &n
return 0;
}
在这段代码中我们可以看到这里我们给n变量初始化了一个0,这里我们设置了一个指针变量叫做p用来接收n的地址。这里我们就可以更好的跟上面的例子相结合,在这里我们把n的地址看成五星级酒店的门牌号,通过门牌号我们可以更加方便地从内存中调取n中储存的值,这样可以更加效率的做到在程序当中找到我们需要的变量。
这里可以清楚的看到我们在32位环境下,a这个变量占用了四个字节,其实每个字节都是有自己地址的,但是对于我们的变量来说,取出的地址就是在四个字节中地址最小的一个地址。
这里我们还要知道一个点,就是地址在内存中的储存大小是根据32位或者64位来确定是占4个字节还是8个字节。
这边我们可以看到在64位中我们的地址都是占用8个字节。
在指针中取地址操作符和解引用操作符是最为实用和重要的
取地址操作符:&主要的作用就是将变量所存的地址取出,再存入指针变量中。
解引用操作符:*主要是用于取出地址当中的变量。
这个操作符相互搭配可以使我们程序增加可读性和可移植性,使程序员理解起来更加清晰。
上图是可爱熊为了方便大家理解画的一幅简易的逻辑图。
这期是对指针的基本介绍,记得持续跟进可爱熊的博客哟!