大家好,今天小编关注到一个比较有意思的话题,就是关于c语言指针与值的问题,于是小编就整理了3个相关介绍c语言指针与值的解答,让我们一起看看吧。
c语言指针详细讲解?
计算机的内存拥有大量的存储单元,每个存储单元的大小为1,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”,每个存储单元拥有一个唯一的地址。
指针变量除了可以存放变量的地址外,还可以存放其他数据的地址,例如可以存放数组和函数的地址。
c语言指针三要素?
指针变量的类型、变量的值和变量的地址。
大家好,今天小编关注到一个比较有意思的话题,就是关于c语言指针与值的问题,于是小编就整理了3个相关介绍c语言指针与值的解答,让我们一起看看吧。
计算机的内存拥有大量的存储单元,每个存储单元的大小为1,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”,每个存储单元拥有一个唯一的地址。
指针变量除了可以存放变量的地址外,还可以存放其他数据的地址,例如可以存放数组和函数的地址。
指针变量的类型、变量的值和变量的地址。
显然,地址就像是要访问存储单元的指示标,在高级语言中形象的称为指针。
地址就是指针,指针就是地址。
可以从以下几个方法去理解指针
1、用数组来解释
例如,char ※c="abc",c为地址,是一个占用4个字节是地址,值"abc"就是你只要找到了c的地址,那么就可以对值进行操作
2、用链表来解释
数组中的值的地址在内存中是有序的,链表是无序的,更加容易说明指针的作用,如图,链表中一般包含一个集合的值和一个指向下一个节点的指针地址,如果理解了链表这个梗,相信指针也没啥难的了
所以,可以从以上2个方面去了解下,初学者学指针比较难,没啥技巧,好事多磨,多编码就会渐渐懂了
可以把指针看成门牌号,指针类型看成房间类型。
比如定义一个整数指针 int *p,此时没有初始化,所以指针p不知道指向的哪个门牌号。此时再申请一个变量int a =0,说明我们申请到了一个房子,里面装的是整数0,可以用&a获得a的地址,也就是门牌号。这时可以给指针p赋值,p=&a,指针p就指向了a的门牌号,里面装的是int 类型的整数0,使用*p就可以获取指针指向的房间里面关着的值0。
其实指针p也有自己的房间门派号,所以可以定义一个二重指针,指向整数指针的指针int **pp = &p。也就是pp指向的是p的门牌号,使用*pp可以打开这间房间获取到里面的内容,发现存储的是一个指向a的指针,再使用**p就可以获得a房间装的值0。
C语言指针真的是C语言中的一个难点,难在哪里?倒不是因为它的概念难,而是讲清楚、讲明白指针概念的方式很难。英文中,指针的单词是pointer,把这个单词翻译成中文时都翻译的“指针”。“指针”这个词语别说在C语言中的使用了,就是在平时日常生活中我们对“指针”这个词语也不一定熟悉。所以有时候我在想,把pointer翻译成地址是不是会好一点,虽然地址的英文单词是address,但是最起码初学者看到“地址”这个词语要比看到“指针”这个词语好理解。
如何向小白解释C语言指针,那必须得用到一个比喻。有一个指针变量p和一个整型变量a,它们分别住在两个不同的房子里。指针变量p的房子叫指针房;整型变量a的房子叫整型房。平日里两者不相往来,互相之间也没有联系。
但是有一天变量a生病了要去医院挂号,但是上班不能请***,咋办?于是就想请变量p去帮忙代办,谁让变量p是个无业游民呢!那么此时变量p就代表变量a了。那么怎么把这两者“代表”起来呢?就靠星号*这个运算符了,也就是*+p的组合就可以代表a了,这个组合用文字书写出来就是*p。至于为什么要用*与p的组合才能代表a?不能直接用p来代表a吗?这个你就别管了,你死记硬背就行了。就像1+1为什么等于2你会去管吗?
我在“C语言编程技术分享”,这个公众号里有一些C语言的基础文章,供小伙伴们参考!
到此,以上就是小编对于c语言指针与值的问题就介绍到这了,希望介绍关于c语言指针与值的3点解答对大家有用。