首页 > 算法 > 图像识别 > c语言指针通俗理解,论述C语言中指针的概念和作用并举例说明

c语言指针通俗理解,论述C语言中指针的概念和作用并举例说明

来源:整理 时间:2023-03-09 12:33:28 编辑:亚灵电子网 手机版

本文目录一览

1,论述C语言中指针的概念和作用并举例说明

C语言_071_指针的定义和使用_上 00:00 / 17:4370% 快捷键说明 空格: 播放 / 暂停Esc: 退出全屏 ↑: 音量提高10% ↓: 音量降低10% →: 单次快进5秒 ←: 单次快退5秒按住此处可拖拽 不再出现 可在播放器设置中重新打开小窗播放快捷键说明

论述C语言中指针的概念和作用并举例说明

2,c语言指针详解

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。C语言用变量来存储数据,用函数来定义一段可以重复使用的代码,它们最终都要放到内存中才能供 CPU 使用。数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存到底存储的是数据还是代码。当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据。CPU 只能通过地址来取得内存中的代码和数据,程序在执行过程中会告知 CPU 要执行的代码以及要读写的数据的地址。如果程序不小心出错,或者开发者有意为之,在 CPU 要写入数据时给它一个代码区域的地址,就会发生内存访问错误。这种内存访问错误会被硬件和操作系统拦截,强制程序崩溃,程序员没有挽救的机会。变量名和函数名为我们提供了方便,让我们在编写代码的过程中可以使用易于阅读和理解的英文字符串,不用直接面对二进制地址,那场景简直让人崩溃。需要注意的是,虽然变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符,但在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。扩展资料指针使用(* 和 &)*&a可以理解为*(&a),&a表示取变量 a 的地址(等价于 pa),*(&a)表示取这个地址上的数据(等价于 *pa),绕来绕去,又回到了原点,*&a仍然等价于 a。&*pa可以理解为&(*pa),*pa表示取得 pa 指向的数据(等价于 a),&(*pa)表示数据的地址(等价于 &a),所以&*pa等价于 pa。对星号*的总结在我们目前所学到的语法中,星号*主要有三种用途:1、表示乘法,例如int a = 3, b = 5, c; c = a * b;,这是最容易理解的。2、表示定义一个指针变量,以和普通变量区分开,例如int a = 100; int *p = &a;。3、表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = &a; *p = 100; b = *p;。

c语言指针详解

3,怎么理解C语言里的指针

指针就是内存的地址。内存懂吧,就是放数据的地方,数据就像一个人的家,懂吧,一栋楼里,肯定住了不止一家人吧,那么确定每家的地址,就需要几楼几零几这样设置地址吧。内存也是一样的,内存是按一个字节的大小来安排地址的。比如int a;我们申请了一个int型,整形的变量,int是四个字节的数据类型,所以变量a在内存上会有一个地址,地址是按第一个数字为准的。假设内存上没有任何数据,都是空的,那么内存就会按顺序来放地址,假设内存的第一个地址是0,以此类推,那么当我们int a变量的时候,内存就会把0-3地址的空间分配给变量a,因为a占四个单元内存,那么怎么确定变量a的地址呢?计算机是按这个内存地址上的最开始那个算的,即变量a的地址是0。当我们在声明了int a变量之后,再声明一个char b变量。如下:int a;char b;这个时候,int a先被声明了,假设内存是空的,那么变量a就会被安排0-3的地址。第二个声明char b;就会接在变量a之后,因为char是一个字节的数据,所以内存只会分配一个4号内存给变量b,变量b的地址就是4。以此类推,其他类型是一样的。指针就是用来存放内存地址的地方。指针变量一般也会单独存放。比如:int a; //内存分配编号为0-3的内存空间给变量a;变量a的地址就是最开头的那个编号即变量a的地址是0;char b; //内存紧接着分配编号为4的内存空间给变量b,因为char是一个字节的,所以变量b的地址唯一,就是4。随后,我们申请指针。int * p; char * t;我们申请了两个指针, *是指针的标志,有*的变量是指针,没有*的是一般变量,*只是用来区别变量是int型数据还是指针。当变量是指针的时候,意味着这个变量只能存放内存地址,而不能存放任何自然数。即指针p,只能用p=&a; 变量a在C语言中,单用的时候,使用变量a里面存放的值,而不是他的地址,比如 我们再声明一个变量 int g; g=a;这个例子里,我们声明了一个int型变量g,并用g=a来初始化g,g=a的意思是,用a里存放的数,即读取出a里面存的数,然后把这个数给g,并不是把a的地址给g。所以C语言里规定了符号&为取地址操作符,p=&a;的意思就是取出a的地址,给p,这个时候是可以的,因为p是指针,并且p指针指向的类型是int。在C语言中,给指针赋地址,要检查变量的类型的,比如int *p;这个指针p,p前面的*表示他是指针,说明他只能存放地址,*号前面的类型说明符,进一步说明,p这个指针只能存int型变量的地址,即如果p=&b;是不会成立的,并且会报错,因为p是一个存放int型变量的指针,而变量b是一个char型变量,在C语言里,指针和对应的变量的类型要一致。不能够混用。不能混用的原因在于,到时候解引用的时候会出错,即如果 p=&b,成立的话,那么到时候使用 a=*p;的时候会出现严重错误,因为p=&b,是把char型变量的地址给int型指针,当我们在使用解引用符号*的时候,就会错误,a=*p;的意思是,用p里存放的地址,找到内存上的数据,并且给变量a,编译器会检查,得知p是int型变量指针,所以需要按照这个地址取出的数据是四个字节的数据,所以程序会把b的地址4按照int型的数据变量地址来使用,会调取内存上编号为4,5,6,7号位的数据,然而编号为4的内存上放的是char 型变量b的数据,5,6,7号内存上,根本没有数据,从而出错。所以C语言严格要求,指针的类型和变量类型要一致,即int *的指针只能存放int型变量的地址,不可混用。最后一个疑问点在于*符号,在C语言里是复用的,即有三种使用方法,这里给你区别一样,要不然你会有疑问,* 这个符号,在C语言有三种意思,一种是乘法,即 a=5*3里,这个时候这个符号*是乘法的意思,认出他很简单,因为乘法必须要有乘数,被乘数,即符号*左右两边都要有实数或者变量,即使是c=a*b;的表达也不会错,a,b是变量的话,符号*是乘号用法。第二种用法就是我们看到的 int *p;这里面符号*是指针的标志,只是用来说明p是一个指针,假设一个int p,那请问怎么区别p是指针还是变量,所以就是通过添加符号*来区别变量和指针的,而且指针和变量一样,都需要int,char,double等类型说明,所以只有在声明变量的时候,才使用。第三中用法就是和符号&的操作相反的操作,符号&在C语言里,只有一个用法,就是表明,这个运算符是取出后面的地址,即&a,就是取出变量a的地址,即指针,符号&左边没有任何变量,只有右边有变量,而符号*则是相反操作,意思是取出符号*右边的指针里的地址,并取出这个地址里存放的数,所以*P,就是取出指针p里的地址,然后取出这个地址里存放的数。符号*也是右边有变量,而左边没有任何变量的操作,他们都是单操作符。第二种和第三种用法要怎么区别,就是第三种一定是a=*p这样使用的,符号*的左边一定没有任何类型说明符,而如果是第二种用法,那么符号*的左边一定有类型说明符,即第二种一定是int *p; 即 类型说明符 + * +变量名的形式,而且只用在声明指针变量的时候。

怎么理解C语言里的指针

文章TAG:c语言指针通俗理解c语言语言指针

最近更新

  • k60芯片是不是arm,KIA6040p是什么芯片?k60芯片是不是arm,KIA6040p是什么芯片?

    芯片采用天玑芯片,由台积电制造,具有良好的声誉和性能。这款芯片在很多机型上都有不错的表现,性能更强,功耗表现也相对稳定,全血版本还是非全血版本?它是台积电科技的骁龙,至尊版由小米公司在.....

    图像识别 日期:2024-04-11

  • 给冰柜打压应该打多少钱,冰箱打压加氟多钱给冰柜打压应该打多少钱,冰箱打压加氟多钱

    冰箱打压加氟多钱2,冰箱冰柜检漏打压是多少3,容声冰箱BCD172AY的制冷压缩机鼓掌要多少钱1,冰箱打压加氟多钱参考价格:¥1299元最低价格:¥1200元超级静音,省电。室温15度,冰箱冷藏室8度,变温室8度,.....

    图像识别 日期:2024-04-10

  • 调谐变压器输出电压视频,变压器调频和调压调谐变压器输出电压视频,变压器调频和调压

    当系统电压不变时,改变变压比就是改变二次侧的输出电压。变压器反馈振荡器的输出电压随振荡频率而变化,根据变压器每匝的高低压相等的原理,开关电源变压器:开关电源变压器是一种带有开关.....

    图像识别 日期:2024-04-10

  • Rc低频补偿电路,低频补偿电路图Rc低频补偿电路,低频补偿电路图

    rc阻容降压电路输出低。检查电源电路,因此,rc阻容降压电路的输出为低,以检查电源电路,RC电路:由两个元件组成的电路:电阻R和电容C..RL电路:由电阻r和电感l两个元件组成的电路,rc振荡电路的.....

    图像识别 日期:2024-04-10

  • 锂电池一般充电电流多少时间,锂电池一般充几个小时锂电池一般充电电流多少时间,锂电池一般充几个小时

    锂电池一般充几个小时锂电池充电时间一般是3-5小时,早期的电池是镍氢,但是锂电池是没有记忆效应不需要这么做,充时间过长会对电池的循环使用寿命产生影响。锂电池是以锂金属或锂合金为阳.....

    图像识别 日期:2024-04-10

  • 105va等多少安,1KVA等于多少安105va等多少安,1KVA等于多少安

    1KVA等于多少安2,变压器上的105VA是什么意思3,彩环电阻105欧等于多少安4,1KVA等于多少安电流5,150V等于多少安倍6,10千伏高压电流表50515a等于底压多少安7,电池容量1瓦时等于多少毫安时1,1KVA.....

    图像识别 日期:2024-04-10

  • 铃木vsf1400多少钱,这个铃木摩托多少钱这车怎么样铃木vsf1400多少钱,这个铃木摩托多少钱这车怎么样

    这个铃木摩托多少钱这车怎么样新车7500元,看样子有2年了.开起来很舒服.2,请问铃木GSX1400摩托车市场价多小还有什么摩车找善烧托车好看些根据年数不同市场价有低有高我觉得大魔神不好看.....

    图像识别 日期:2024-04-10

  • 2362IC供电是多少V,电磁炉 电磁盘的供电电压是多少2362IC供电是多少V,电磁炉 电磁盘的供电电压是多少

    电磁炉电磁盘的供电电压是多少2,ic供电最好取多少伏3,功放管2SA1302集电极供电是多少4,为什么电源IC的供电电压规格书里写的最大是28V但实际上却用312V呢5,电脑usb接口供电量多少V6,3862芯.....

    图像识别 日期:2024-04-10