全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

C语言知识点(指针篇)

发布时间:2022-10-26 15:13:30
发布人:qyf

C语言知识点(指针篇)

  指针

  1、哪些情况会出现野指针

  指针变量未初始化、指针释放后未为置空、指针操作超越变量作用域

  2、描述内存分区

  程序在运行前:分为代码区、BSS段(未初始化数据区)、data段(初始化数据区)

  程序在运行后:堆区、栈区、全局区(静态区)、文字常量区、代码区

  3、描述普通局部变量、普通全局变量、静态局部变量、静态全局变量的区别

  普通局部变量:

  存在栈区、不初始化内容随机、只在定义所在的复合语句中有效、符合语句结束变量空间释放

  普通全局变量

  存在全局区、不初始化内容为0、进程结束空间才被释放,能被当前源文件或其他源文件使用,只是其他源文件使用的时候,记得使用extern修饰

  静态局部变量:

  存在全局区、不初始化内容为0、整个进程结束空间才被释放,只能在定义所在的复合语句中有效

  静态全局变量

  存在全局区、不初始化内容为0、整个进程结束空间才被释放,只能被当前源文件使用

  4、描述指针数组的概念

  指针数组本质是数组,只是数组的每个元素是一个指针(地址)

  5、描述32位或64位平台下指针的大小

  32位平台:任意类型的指针大小为4字节

  64位平台:任意类型的指针大小为8字节

  6、描述指针与指针变量的区别

  指针:内存中每一个字节都会分配一个32位或64位的编号,这个编号就是地址, 而指针就是内存单元的编号。

  指针变量:本质是变量 只是该变量存放的是空间的地址编号

  7、指针和地址的区别

  指针和地址最大的区别是指针有类型,而地址没有类型,地址仅仅是地址编号。指针是由地址和类型组成,指针不仅记录了地址编号还记录了该地址空间的类型

  8、描述一下int *p含义

  p为指针变量,p自身类型为int *,指向的类型为int *,p可以保存的是int变量的地址编号

  9、描述int *p[5]的含义

  p是指针数组的数组名,该数组5个元素,每个元素为int *类型。p是存放整形变量地址的数组。

  10、描述int (*p)[10]的含义

  p是数组指针变量,p的本质是指针变量 保存的是数组的首地址,该数组必须有10个元素且每个元素的类型为int类型

  11、描述int *p[10]的含义

  p是指针数组,p的本质是数组 只是数组的每个元素为int *类型

  12、描述int (*p)(int,int)的含义

  p是函数指针变量, p的本质是指针变量 ,它保存的是函数的入口地址,只是该函数必须是int类型的返回值类型,且有两个int类型的形参。

  13、描述int (*p[5])(int ,int)的含义

  p是函数指针数组。p的本质是数组,数组的每个元素为函数指针,该函数必须是int返回值类型和两个整型的形参

  14、描述数组元素指针变量的含义

  数组元素指针变量是指保存数组元素的地址的指针变量,该变量+1跳过一个元素

  15、两个指向同一数组的元素指针变量的关系

  指向同一数组的元素指针变量可以判断大小、赋值但是相加是无意义的。

  < >判断两指针变量的位置关系

  ==判断两指针变量是否指向同一处

  =让两指针变量 指向同一处

  -计算两指针变量间相差的元素的个数

  +两指针变量相加是无意义

  16、指针作为函数的参数的意义

  指针作为函数的参数,函数内部可以修改外部指针所对应空间的内容

  指针作为函数的参数,如果传递的是自定义类型数据的地址,可以节约空间

  指针作为函数的参数,可以将外部申请的空间传递到函数内部使用

  17、指针作为函数的返回值类型的意义

  指针作为函数的返回值类型 可以将函数内部的空间返回到函数外部使用

  18、描述函数指针变量

  函数指针变量本质是指针变量,只是该变量保存的是函数的入口地址,我们可以通过函数指针变量简介的调用该指针变量所保存的函数

  19、函数指针变量作为函数参数的意义

  如果函数指针变量作为函数的参数,那么该函数可以同函数指针参数间接调用外部传递过来的函数。这样可以让函数的功能多样化,实现函数的功能复用

  20、Int *和int **的关系

  Int *它的类型是int *类型 所指向的的类型为int类型

  Int **它的类型是int **类型 所指向的类型为int *类型

  Int *定义的变量的地址可以用int **定义的变量来保存

  21、指针中用到的*和&各自的作用

  在定义指针变量时,如:int *p;其中*的作用是修饰p为int *类型的指针变量

  在使用的时候,如*p;表示取p所保存的地址编号对应空间的内容

  在使用的时候,如&num;表示取变量num的地址变量,如果num的类型为int,那么&num的类型就为int *

  在使用的时候,*和&如果同时出现,从左往右可以将*和&相互抵消

  22、谈谈指针变量的类型

  指针变量的类型分为:自身类型和指向类型

  自身类型描述的是指针变量本身的类型,而指向的类型描述的是指针变量能够保存啥类型变量的地址

  自身类型一般用判断指针变量赋值、传参时的指针类型是否匹配

  指向类型一般用于决定指针变量能够访问所指向空间的长度,以及指针变量+1跳过的指针宽度

  比如:int *p;p自身的类型为int *类型,而p指向的类型为int类型。*p能取空间的指针数为4字节,p+1跳过4字节

  23、指针变量最好初始化为啥值

  初始化为NULL

  24、操作指针变量前,做好对指针变量做怎样的判断

  操作指针变量前,最好判断是否指向了NULL

  25、指针作为函数的返回值时需要注意啥

  指针作为函数的返回值,不要返回函数内部中局部变量的地址。因为函数中局部变量在函数结束后会被立即释放,而外部通过函数返回值得到的地址也指向了以及回收的空间地址(非法地址),如果继续操作改地址将会出现段错误或其他不可确定的错误

  26、谈谈const int *p和int *const p的区别

  Const int *p:const修饰的是*,p是可读可写,但是用户不能通过*p修改外部空间的内容(只能读操作)

  Int * const p;const修饰的是p,p一旦初始化了指向,就不能修改p的指向,但是用户可以使用*p修改外部空间的值

  27、数组指针的定义形式

  数组指针的定义形式为:类型 (*p)[]

  28、数组指针的作用

  数组指针可以保存数组的首地址,数组指针+1将跳过整个数组

  一维数组指针可以和二维数组配合使用,可以使用一维数组指针保存二维数组的行地址,等同二维数组名一样的操作二维数组的元素

相关文章

大数据测试工程师需要具备哪些技能?

大数据测试工程师需要具备哪些技能?

2023-10-14
压力测试和性能测试有什么区别?

压力测试和性能测试有什么区别?

2023-10-14
什么是运行时环境?

什么是运行时环境?

2023-10-14
什么是MAC地址?

什么是MAC地址?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取