当前位置: 首页 > news >正文

上海做网站设计公司私域运营软件

上海做网站设计公司,私域运营软件,wordpress手机移动版,在招聘网站做销售技巧目录 什么是指针? 指针和指针类型 指针的类型 指针类型的意义 指针-整数 指针的解引用 指针 - 指针 指针的关系运算 野指针 什么是野指针? 野指针的成因 如何规避野指针? 二级指针 什么是指针? 在介绍指针之前&#…

目录

什么是指针?

指针和指针类型

指针的类型

指针类型的意义

指针+-整数

指针的解引用

指针 - 指针

指针的关系运算

野指针

什么是野指针?

野指针的成因

如何规避野指针?

二级指针


什么是指针?

        在介绍指针之前,我们需要先对内存与地址有一个认识。

        内存:内存是计算机重要且珍贵的硬件资源,计算机上所有的程序的都是运行在内存中的。为了能够合理有效的使用内存,就把内存划分为一个个小的内存单元

        那么这个内存单元应该多大呢?

        如果内存单元太小则不方便使用,太大则可能会浪费内存资源,在经过仔细的计算和权衡后设计者发现将一个字节作为内存单元的大小是最合适的。

        划分好内存后,如何有效的访问到每个内存单元呢?

        在现实生活中定位居住地址时,相比起某某酒店第三层从左侧数第七个房间这样的表述形式,给每个房间一个唯一的号码如307就可以更快速更准确的找到指定地址,同理,我们通过给内存空间一个唯一的号码来更有效的访问内存单元,这个行为就称为编址(地址)

        那么应该如何编址,以及每个地址对应多大的空间?

        众所周知,计算机只能识别0,1这样的二进制数。对于32位的计算机而言一共有32根地址线(物理电线),每根地址线可以产生两种电信号:高电平和低电平。两种电信号分别对应二进制的0和1,32根地址线一共可以产生2^32种电信号,如下:

        00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000001
        ...
        11111111 11111111 11111111 11111111

经过仔细的计算和权衡后我们发现一个字节(一个内存单元)给一个号码是比较合适的,这些号码就被称为内存单元的地址。每一个地址可以维护一个内存单元,2^32个地址就可以维护2^32个内存单元(4GB),因此对于32位的机器而言,最大可以维护4GB的内存空间,同理可得64位机器最大可以维护2^64个字节的内存空间。

        什么是指针?

        指针是内存中一个最小单元的编号,即指针实际上就是地址。而我们平时口语中所说的指针,通常指的是指针变量,是用来存放内存地址的变量。

指针和指针类型

        指针的定义和初始化:

        指针的使用:

        指针的应用场景:

        1.有些时候我们无法直接使用变量名来操控想要控制的变量,从而使用指针来间接操控变量(传址调用)。

        2.可以节省空间,提高运行效率。

        函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,就会会导致性能的下降,而指针大小只有4(32位)或8(64位)字节,因此在这种情景下传指针可以有效节省空间并提高运行效率。

        指针的大小:

        指针是用来存放地址的,在32位的机器上,地址是32个0或者1组成二进制序列,一个比特位(bit)可以存储一个二进制位,一个字节(byte)有8个比特位,因此需要4个字节才能存下地址,即指针变量的大小就应该是4个字节。同理可得在64位的机器上,指针变量的大小应该是8个字节。

        指针的大小在32位平台是4个字节,在64位平台是8个字节。

指针的类型

        众所周知,数值变量都是有类型的,如:char, int, float, double等,那么指针有类型吗?答案是有的。

指针类型的意义

        众所周知,其他变量之所以有各种类型一是需要表示不同类型的数据如:整型,浮点型等,二是为了更合理的使用内存空间如:char,short,int等,而任何指针的大小都是4或8字节,那指针的类型有什么意义呢?难道仅仅是为了表示所指向的变量是什么类型?

        指针的类型决定了指针的权限。

指针+-整数

        指针的类型决定了指针 +n(-n)前进(后退)多大的距离(zieof(类型) * n)。

指针的解引用

        指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。比如: char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。

指针 - 指针

        指针 - 指针的绝对值计算的是两个地址之间的元素个数。注:只有指向同一片空间且是同一类型的指针相减才有实际意义!

指针的关系运算

        指针是可以进行关系运算的:

sp:

        C语言标准规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。

野指针

        在有些场景下,我们并不会在创建指针后就立刻使用它,为了避免它成为一个野指针,我们需要将它初始化成 NULL(置空),NULL是一个为了避免未使用或不再使用的指针变量成为一个野指针而定义的宏。

什么是野指针?

        概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。通俗的讲,不知道明确指向的,指向非法空间的指针就是野指针。

        野指针可能带来的危害:

        1.指向不可访问的地址。危害:触发段错误。
        2.指向一个可用的,但是没有明确意义的空间。危害:程序可以正确运行,但通常这种情况下,我们就会认为我们的程序是正确的没有问题的,然而事实上就是有问题存在,所以这样就掩盖了我们程序上的错误。
        3.指向一个可用的,而且正在被使用的空间。危害:如果我们对这样一个指针进行解引用,对其所指向的空间内容进行了修改,但是实际上这块空间正在被使用,那么这个时候变量的内容突然被改变,当然就会对程序的运行产生影响,因为我们所使用的变量已经不是我们所想要使用的那个值了。通常这样的程序都会崩溃,或者数据被损坏。

        总而言之,野指针的危害极大!!!

野指针的成因

1.指针未初始化就直接使用

2.指针的越界访问

3.指针指向的空间已经释放

如何规避野指针?

        1. 指针初始化。

        2. 小心指针越界
        3. 指针指向空间释放,及时置NULL
        4. 避免返回局部变量的地址
        5. 指针使用之前检查有效性

二级指针

        众所周知,指针变量也是变量,而变量都是有地址的,所以指针变量也有地址。我们把指向普通类型(非指针类型)变量的指针变量称为一级指针,把指向一级指针的指针变量称为二级指针,即二级指针是用来存放一级指针的地址的。三级指针同理。

http://www.ahscrl.com/news/12404.html

相关文章:

  • 信誉比较好的网上做任务的网站seo关键字优化技巧
  • 网站运行时错误如何做怎样免费制作网页
  • 做淘宝客网站要注意什么青岛seo关键词优化排名
  • 撸撸撸做最好的导航网站网站关键词推广优化
  • 阿拉尔市建设局网站火锅店营销方案
  • wordpress建站环境小程序开发教程
  • 灵犀科技-网站开发宁波seo在线优化方案公司
  • 电脑用虚拟机做网站网站seo系统
  • 服装网站建设效果用广州seo推广获精准访问量
  • 网站接做网站单关键词诊断优化全部关键词
  • wordpress站点描述sem
  • 银川网站开发推广企业最大免费发布平台
  • 淮安网站建设百度seo怎么样优化
  • 视频号广告推广热狗网站排名优化外包
  • 天津河东区网站建设专业seo排名优化费用
  • 做网站的市场前景怎样推广一个产品
  • js特效素材网整站优化seo
  • 输入网址跳到别的网站公关负面处理公司
  • 网站后台怎么做alt标签头条搜索站长平台
  • 做字体的网站电脑培训学校能学什么
  • 做网站的公司找客户seo技巧seo排名优化
  • 苹果网站用什么做的网站建设网络推广平台
  • 建站公司 深圳中国网络营销公司排名
  • 寻求南宁网站建设人员新产品推广方案怎么写
  • 开店铺的流程优化网站排名需要多少钱
  • seo网站建设哪家专业天津seo方案
  • 网站简介 更改什么是seo教程
  • 做名片最好的网站培训总结精辟句子
  • wordpress oss 静态seo是什么工作内容
  • 昆明软件开发公司排名windows优化大师使用方法