【C语言】概念汇总(笔试面试题常问)

记录学习,持续更新

目录

1、什么是野指针,野指针出现的情况有哪些,怎么避免?

2、介绍一下static关键字和const关键字

3、描述一下栈和队列

4、define和typedef的区别

5、#include< >和#include" "的区别


1、什么是野指针,野指针出现的情况有哪些,怎么避免?

        (1)野指针是一个未初始化,或者未明确指向确定地址的指针。它可能指向任何地址,包括程序内的合法内存区域或非法内存区域
        
        (2)野指针产生的情况:
1、指针未进行初始化
2、指针指向已经被释放的内存区域
3、指针访问了超出其分配的内存区域

        (3)如何避免
1、定义指针的时候,进行初始化,赋值为NULL
2、解引用之前,先去判断这个指针是不是NULL
3、指针使用完毕之后,将其赋值为NULL
4、指针使用前,给它一个可用的内存地址空间

2、介绍一下static关键字和const关键字

        static修饰变量时,变量的生命周期会被延长,跟随整个程序结束,同时只能在内部单独访问,无法被其他文件调用(普通的变量创建后放在栈区,static修饰后会放在静态区,相当于变成了全局变量)
        const修饰的变量进行初始化后不能再进行修改,强行修改会发生报错,用来保护数据,意味着只读,其中在修饰指针变量时,有以下三种用法:
1、const int *ptr        用于保护指针指向的内容不被修改
2、int *const ptr        用于保护指针地址不被修改
3、const int *const ptr        用于保护指针指向的内容和指针地址都不被修改

3、描述一下栈和队列

(1)相似点:都是操作受限的线性数据结构
(2)不同点:
1、栈:遵循后进先出原则,即最后添加的元素将是第一个被移除的元素。添加(push)和删除(pop)操作都在同一端进行,即栈顶。
2、队列:遵循先进先出原则,即最先添加的元素将是第一个被移除的元素。添加操作在一端进行(队尾),而删除操作在另一端进行(队首)。

4、define和typedef的区别

        #define主要用于定义宏,进行与处理阶段的文本简单替换,不检查正确性;typedef用于为数据类型定义新的名称,且定义的别名在进行编译时会进行类型检查,更加安全

5、#include< >和#include" "的区别

        #include< >是到指定的目录寻找头文件;#include" "先到项目所在目录寻找头文件,如果没有找到,再去系统指定的目录下寻找

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值