C语言初步理解指针

首先我们需要大概明白指针是什么样子的,指针的作用,在C语言中扮演什么样的角色

现在想象这样一个场景,加入有一个宿舍楼,楼内有1000个房间,但没有宿舍号,你朋友来你宿舍玩,要怎么找到你,只能通过挨个房间巧妙问直到找到你所在的房间为止。这样可能就要花上几个小时才能找到你,但如果我们将每个宿舍设置一个寝室号码牌,是不是就能准确的锁定要去往的寝室。

一楼:101、102、103...
二楼:201、202、203...
三楼:301、302、303...
...

 在现实生活中我们能通过房间号快速的找到目标,那在编程中我们同样也能通过指针快速的找到目标,提升我们的效率。

 计算机有许多硬件,就像人体有很多器官。器官和器官之间是通过神经和血管连接的,计算机也一样是通过很多线来连接的,这些线让硬件之间协调运作。

 了解了内存与地址的关系,我们再回到C语言中来,C语言中创建变量其实就是向内存申请空间

这边我们创建一个整数变量,代码谁都能写出来吧

    int num = 5;

这四个内存空间组成了一个数字,但当我想访问num的时候,你不能给我四个地址吧,这四个地址到底哪个代表着num呢?

int main()
{
    int num = 5;
    printf("%p", &num);//%p用于打印指针,&是取地址操作符用于提取地址
    return 0;
}

打印结果:
Ox006FFD70

会取最小的,也就是起始地址。

指针变量

那么我们现在可以取出一个地址,有没有办法存放一个地址呢?

    pn = &num//创建一个叫pn的变量,然后把num的地址放进去

那我们怎么写pn的类型呢?

    //pn就被称为指针变量,指针变量顾名思义就是用于存放指针的变量
    int* pn = #

了解了指针类型,而且我们现在已知pn中存放的是num的地址,那怎么通过pn找到num呢?

思考,指针变量的本质也是一个变量,在我们创建指针变量的时候内存是不是也要为它开辟一块空间,那这块空间有多大呢?

换句话问就是指针变量存放的是指针,地址的存放需要多大空间?

 所以32位机器(x86)一个地址的大小是4个字节

        64位机器(x64)一个地址的大小是8个字节

讲到这我们也稍微补充点知识点吧

在这我们对指针也有了大概的概念,但想完全掌握好指针,这才是刚刚开始

指针是一个知识点非常多也非常密集的难点,Mr.狠人不想将这么多东西一股脑的全堆一起塞给大家,我认为大家最好还是循序渐进,按自身的理解状态来学习。理解的好就继续学习,不怎么理解就先吃透当前的知识。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值