全国旗舰校区

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

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

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

C语言面试题之指针

发布时间:2022-06-07 16:36:00
发布人:wjy

  哪些情况会出现野指针

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

  描述内存分区

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

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

C语言面试题之指针

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

  普通局部变量:

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

  普通全局变量

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

  静态局部变量:

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

  静态全局变量:

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

  描述指针数组的概念

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

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

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

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

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

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

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

  指针和地址的区别

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

  描述一下int *p含义

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

  描述int *p[5]的含义

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

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

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

  描述int *p[10]的含义

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  描述函数指针变量

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

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

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

  Int *和int **的关系

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

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

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

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

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

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

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

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

  谈谈指针变量的类型

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

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

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

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

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

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

  初始化为NULL

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

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

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

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

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

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

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

  数组指针的定义形式

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

  数组指针的作用

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

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

  更多关于物联网培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

相关文章

抖音小店增值税发票开不了怎么办

抖音小店增值税发票开不了怎么办

2023-10-08
抖音小店自动回复机器人怎么弄出来

抖音小店自动回复机器人怎么弄出来

2023-10-08
抖音小店主体资质怎么修改名称

抖音小店主体资质怎么修改名称

2023-10-08
抖音小店咨询在哪回复顾客信息

抖音小店咨询在哪回复顾客信息

2023-10-08

最新文章

上海物联网培训一般费用多少

上海物联网培训一般费用多少

2023-09-12
北京物联网培训费用大概多少

北京物联网培训费用大概多少

2023-09-12
北京物联网培训需要费用高不高

北京物联网培训需要费用高不高

2023-09-12
上海效果好的物联网培训费用高吗

上海效果好的物联网培训费用高吗

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