首页 > 其他分享 >笔试题(2024/8/19)

笔试题(2024/8/19)

时间:2024-08-19 20:26:36浏览次数:8  
标签:链表 const 19 笔试 2024 int 用于 ifdef 转换

一、简答题

1.简述#ifdef、#else、#endif和#iFndef 的作用

#ifdef、#else、#endif 和 #ifndef 是 C/C++ 中的预处理指令,用于条件编译。它们的作用是根据条件来控制代码的编译过程。

  • #ifdef(即 “if defined”)指令用于检查一个宏是否已定义。如果该宏已被定义,则编译下面的代码块;否则,跳过该代码块。

  • #else 指令在与 #ifdef 配对使用时,表示如果前面的宏未定义,则编译下面的代码块。

  • #endif 指令用于结束 #ifdef 或 #ifndef 块。

  • #ifndef(即 “if not defined”)指令与 #ifdef 相反,用于检查一个宏是否未定义。如果该宏未定义,则编译下面的代码块;否则,跳过该代码块。

2.sizeof和strlen的区别

1.sizeof 是运算符,而strlen 是C语言库函数中的一个函数;

2.sizeof 操作符用于计算变量或类型的大小,一般单位为字节,通常用于计算内存大小;

3.strlen是计算字符串长度的,遇到\0结束,返回不包括\0,即如果没有\0则会计算出随机值;


3.C语言的malloc和C十+中的new有什么区别

malloc 是 C 语言中的函数,只负责分配内存,不会调用构造函数或初始化对象,分配失败时返回 NULL,释放时用 freenew 是 C++ 中的运算符,除了分配内存,还会调用构造函数进行对象初始化,分配失败时抛出异常(或返回 nullptr),释放时用 delete,更符合 C++ 的面向对象特性。

4.一个参数可以即是const 又是volatile吗?

可以,const 修饰参数,表示该参数在程序内部是只读的,volatile 修饰参数,表示该参数可能会在程序运行期间被外部设备等因素改变。const 和 volatile 同时修饰,则意味着该参数在程序执行过程中不能从内部改变,但可以受到外界条件的影响而改变,所以每次使用这个变量时,程序都是从内存中去读取该值,而不是从寄存器读取它的备份。
注意一点, const关键字在编译期发挥作用,它并没有实际禁止某段内存的读写。
所以,只要同时需要两者的特性,就可以使用 const 和 volatile 关键字修饰同一个参数。


5.说一说c++中四种cast转换

1. static_cast
用于基本数据类型之间的转换,如int转换为double,也可以用于类层次结构中的向上转换(子类转换为父类),但不能用于向下转换(父类转换为子类)。

2. dynamic_cast
用于类层次结构中的向下转换(父类转换为子类),但只能用于含有虚函数的类,且转换时会进行类型检查,如果转换失败则返回空指针。

3. reinterpret_cast
用于将一个指针转换为另一个类型的指针,或将一个整数转换为指针类型,但不进行类型检查,慎用。

4. const_cast
用于去除指针或引用类型的const属性,使其可以修改被指向的对象,但不能用于去除非const类型的const属性。


6.C++类内可以定义引用数据成员吗?

        在C++中,类内是可以定义引用数据成员的,但是在初始化对象时,必须在构造函数的成员初始化列表中对引用进行初始化,因为引用必须在创建时被初始化,并且不能在其生存期内引用不同的对象

7.什么是右值引用,跟左值又有什么区别

值引用是C++11的新特性,用于实现转移语义和精确传递,旨在消除不必要的对象拷贝,提升效率,并简化泛型函数定义。左值是指能取地址或具名的对象,右值则是临时、不可寻址的对象。左值可寻址、可赋值且可变,而右值则不可寻址,只能用于给左值赋值,且右值引用通常不可变。

8.链表和数组有什么区别

1、存储方式不同
数组是连续存储,数组在创建时需要一个整块的空间。

链表是链式存储,链表在内存空间中不一定是连续的。

数组一般创建在栈区,链表一般创建在堆区,在增加节点时需要new或malloc新节点,相较于数组长度不固定,自由度高。

2、访问元素方式不同
数组可以通过下标随机访问,单向链表只能通过头结点从前向后访问链表中的元素。

3、增删效率不同
数组在插入或删除的时候需要移动链表中的其他元素,时间复杂的为O(n)。

链表在进行插入删除时,找到要插入或删除的位置后,增删时间复杂度为O(1)。

所以当线性表进行大量的插入和删除操作时建议使用链表,若主要对线性表进行查找操作,较少进行插入操作是建议使用数组。


9.简述队列和栈的异同

栈与队列的相同点:

1.都是线性结构。

2.插入操作都是限定在表尾进行。

3.都可以通过顺序结构和链式结构实现。、

4.插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。

5.多链栈和多链队列的管理模式可以相同。

栈与队列的不同点:

1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。

2.应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。

3.顺序栈能够实现多栈空间共享,而顺序队列不能。

二、编程题

1.写一个宏MIN,返回两个数小的那个

#define MIN(x,y) ((x) > (y) ? (y) : (x))

2.写出int、bool、 float,指针变量与“零值” 比较的if语句

// 与bool类型比较
if(!val)

//与int 型比较
if(var==0)

//与指针变量比较
if(var == NULL)

//与float型比较
const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON)

3.设置地址为0x13579的整型变量的值为0x97351

int *ptr;

ptr = (int *)0x13579;

*ptr = 0x97351;


4.编码实现字符串转化为数字

#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "12345";
    int num = atoi(str);
    printf("转换后的数字是: %d\n", num);
    return 0;
}

标签:链表,const,19,笔试,2024,int,用于,ifdef,转换
From: https://blog.csdn.net/qq_60098634/article/details/141310745

相关文章

  • 2024.8 总结
    杂题【YBOJ】Pair题目描述给出二维平面上的\(n\)个点,第\(i\)个点的坐标为\(x_i,y_i\)。定义点\(i\)与点\(j\)之间的距离为\(\frac{|x_i-x_j|+|y_i-y_j|}{\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}}\),求平面上两点的距离最大为多少。($1\len\le10^5$)解题思路首先,我们......
  • 2024.8.19
    #include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<stdlib.h>intmain(){ //1.创建套接字 intsock_fd=socket(AF_I......
  • 11月 * 杭州 * 国际会议(HCIVR 2024)
    2024年人机交互与虚拟现实国际会议会议时间地点:2024年11月15-17日——中国杭州截稿日期:2024年8月30日【出版检索】所有的投稿论文都必须经过2-3位组委会专家审稿,经过严格的审稿之后,最终所有录用的论文将由论文集出版,出版后由出版社提交至EICompendex、Scopus等数据库收录......
  • YOLOv5改进 | 融合改进 | C3融合重写星辰网络之Rewrite the Stars⭐【CVPR2024】
     秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • 2024暑假集训测试28
    前言比赛链接。上午要输液所以没有打,就下午改一改,应该明天就能回去了。T1与和原题:[ABC238D]ANDandSUM。\(x\&y=a\),说明\(x,y\)二进制中都包含\(a\)且其余位上均不重合,故此若\((s-2a)\&a=0\)即符合,特殊的,因为\(x\&y=a\le\min(x,y)\),所以\(x+y=s\ge2a\),需要......
  • NJUSC2024 游记
    Day-1到达南京,参观玄武湖,打颓。感觉玄武湖很不错。Day0参观南京博物院。全是人,没啥兴趣。下午和fyz去打开某个网红咖啡店,全是人,没啥意思。然后去报道。晚上打颓。Day1上午数学考试,反正就是图一乐,发现只看得懂最后一道题,发现最后一道题是签到,30分钟写了开摆。下午机试。......
  • 2024首届中国Scrum大会成功落幕
    ​​2024年8月17日,首届中国Scrum大会在上海圆满落幕。这次大会由Scrum.org和Scrum中文网联合主办,以“AI时代下的敏捷”为主题,吸引了来自全国各地的敏捷实践者、企业领导、技术专家和学者,共同探讨敏捷方法在新时代的应用与未来发展。大会内容丰富,设置了三个分会场,分别聚焦金融业......
  • 聊聊2024 年人们对人工智能的信任程度有多高?
    引言随着人工智能渗透到人们生活的各个方面,了解人们对技术的信任变得越来越重要。尽管人工智能有可能彻底改变行业并改善日常生活,但它却伴随着着迷与怀疑。了解公众对人工智能的普遍感受以及这些看法可能如何随着使用而改变,可以让其他人了解人工智能信任的现状及其未来影响......
  • 【题解】Solution Set - NOIP2024集训Day10 树的直径、重⼼、中⼼
    【题解】SolutionSet-NOIP2024集训Day10树的直径、重⼼、中⼼https://www.becoder.com.cn/contest/5464「CF516D」DrazilandMorningExercise首先,我们可以换根求出所有点的\(f\)。然后不会了……思考一下,一条直径提供的到底时什么。实际上,一条直径上的点取到\(f\)......
  • AP9196 DC-DC 输入3-40V 6A升压恒流电源管理芯 太阳能路灯方案
    产品说明AP9196是一系列外围电路简洁的宽调光比升压调光恒流驱动器,适用于3-40V输入电压范围的LED照明领域。AP9196采用我司专利算法,可以实现高精度的恒流效果,输出电流恒流精度≤±3%,电压工作范围为5-40V,可以轻松满足锂电池及中低压的应用需求,输出耐压仅由MOS耐压决定。芯片内......