c语言:初识指针
创始人
2024-02-07 22:52:38

初识指针

  • 一.指针是什么
    • 问题一:指针,指针变量,内存,地址,编号的关系
    • 问题二:为什么指针大小是4或8字节
  • 二.如何使用指针
  • 三.指针类型
    • 问题三:既然指针是4个字节,那它是如何放下long类型的呢

在这里插入图片描述

一.指针是什么

在这里插入图片描述

想要了解指针,必须得先了解内存

内存

内存是电脑上的一种存储设备
一般是4/8/16G

程序在运行时会加载到内存中,这时就会占用内存

如何管理内存

在这里插入图片描述

我们这里把内存划分为一个一个的小屋子(内存单元)

在这里插入图片描述

一个内存单元的大小是一个字节

在这里插入图片描述

问题一:指针,指针变量,内存,地址,编号的关系

我们给每一个内存单元编上号(这里为了简洁所以编号都是以16进制来写的),每一个内存单元都有它自己的号码

其实这个编号就是地址,也就是指针

ps:这里指出一个误区,内存是内存,地址是地址,千万不要把内存跟地址混为一谈,内存里储存的是数据,而地址(指针)是这个内存的编号

这里我假设将一个变量int a=10存入内存中

在这里插入图片描述

它其实就是一个字节一个字节从低地址到高地址填充,每个字节都有各自的地址(当然中间的地址是假设),我们使用&a来取出a的地址其实是(0x0012ff40),也就是第一个字节的地址(较小的地址)

我们就可以这么写int*pa=&a。pa就被称为指针变量(指针是一种变量,专门用来存放地址)

ps:我们通常都直接说pa是指针,其实它的全称应当是指针变量,指针是地址,而指针变量是专门用来存放地址的,注意区分(后续我遵循一般口语,指针变量都简称指针)

这里给个例子
在这里插入图片描述

这里我们可以看出其实用pa和&a打印出来的效果是一样的,也就是a的地址存到了pa里

问题二:为什么指针大小是4或8字节

内存为什么这样分呢,它有多少呢

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

有32根电线,每根电线上产生两种可能(0,1),那么一共就有2的32次方种排序,那么我们的内存就是2的32次方个比特那么多,也就是4G

ps:现在32根电线不够用了,大多数电脑都是64位的

那么我们的指针变量要想容纳地址(因为每个地址如上图是32个比特)就必须得有32个比特位那么大,也就是常规的4个字节(当然同理在64位电脑上就是64个比特,8个字节)

二.如何使用指针

我们想要使用指针,得先给指针初始化,也就是让它存入一个地址。

如上面我令int*pa=&a,就是把a的地址存入了pa中,也就是将这个指针初始化了,那么我们如何通过这个指针来找到a呢

这里我们只需要解引用pa( * pa),就可以通过这个地址找到存在该地址下的存储单元内的数据(a),我们就可以直接把*pa看作a,同理我们就可以直接通过它来修改a的值

在这里插入图片描述

三.指针类型

指针类型其实跟变量类型一样,有int short long…

但指针类型跟变量有很大的区别:在32位机器里,无论是整形还是字符形还是其他类型,指针(变量)的大小总是4个字节。

问题三:既然指针是4个字节,那它是如何放下long类型的呢

这里曾经困扰了我一段时间,在此我们需要抓住指针的本质

如上文所说,指针(变量)是用于存放这个内存的编号的,那么在32位机器中,一共有32根电线,每根电线能产生0,1两种可能,根据排序,那么就能产生2的32次方个内存单元,每个内存单元需要一个编号,那么我们就需要2的32次方个编号,那么指针就需要32位也就是4个字节

所以综上,指针只是存这2的32次方种编号的与你存的内容无关,你存的数据是在内存单位里的。而指针存的是这个门牌号,所以当然能存的下啦

既然指针都是4或8个字节,那这区分类型有什么用呢?

这里举个例子

在这里插入图片描述

注意蓝括号前面的16进制数是a的地址,蓝括号内的16进制数是a存在内存中的数据,每两个16进制数表示一个字节,这里整形是4个字节

在这里插入图片描述

当我继续走,走完后可以看到a的第一个字节被改为了0而后面的3个字节未发生变化,这里可以看出char类型指针一次操作一个字节

在这里插入图片描述

这次试试int类型的指针

在这里插入图片描述

这里可以看出,走完后可以看到a的4个字节全部变为了0,int类型指针一次操作4个字节

得出结论:指针类型决定了,指针进行解引用操作时,一次访问几个字节
在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...