1.下面5个函数哪个能够成功进行两个数的交换?

swap1传的是值的副本,在函数体内被修改了形参p、q(实际参数a、b的一个拷贝),p、q的值确实交换了,但是它们是局部变量,不会影响到主函数中的a和b。当函数swap1生命周期结束时,p、q所在栈也就被删除了。

swap2和swap3传的是一个地址进去,在函数体内的形参*p、*q是指向实际参数a、b地址的两个指针。

swap5函数与swap4类似,是一个引用传递,修改的结果直接影响实参。

2.写出函数指针、函数返回指针、const指针、指向const的指针、指向const的const
指针。

3.找出下面程序的错误,并解释它为什么是错的。

程序体存在着函数指针的错误使用问题。正确程序如下:

4.描述下列指针

(1)float(**def)[10];
def是一个二级指针,它指向的是一个一维数组的指针,数组的元素都是float。
(2)double*(*gh)[10];
gh是一个指针,它指向一个一维数组,数组元素都是double*。
(3)double(*f[10])();
f是一个数组,f有10个元素,元素都是函数的指针,指向的函数类型是没有参数且返回
double的函数。
(4)int*((*b)[10]);
就跟“int* (*b)[10]”是一样的,是一维数组的指针。
(5)Long (* fun)(int)
函数指针。
(6)Int (*(*F)(int,int))(int)
F是一个函数的指针,指向的函数的类型是有两个int参数并且返回一个函数指针的函
数,返回的函数指针指向有一个int参数且返回int的函数。

5.以下程序的输出是

本题定义一个指针指向一个10个int元素的数组。a+1表明a指针向后移动1*sizeof(数组大小);a+1后共向后移动40个字节。*a+1仅针对这一行向后移动4个字节,如下图所示。*(*(a+1)+2)表示a[1][2]。

输出如下:1 11 2 2 11。

6.写出如下程序片段的输出。

第一个结果好理解,是正常的指针运算。2

第二个的确是5。首先a表示一个1行5列数组,在内存中表示为一个5个元素的序列。int
*ptr=(int*)(&a+1)的意思是,指向a数组的第6个元素(尽管这个元素不存在)。那么显然,
(ptr-1)所指向的数据就是a数组的第5个元素——5。

时刻牢记这样的观点:数组名本身就是指针,再加个&,就变成了双指针,这里的双指
针就是指二维数组,加1,就是数组整体加一行,ptr指向a的第6个元素。

7.C++中有了malloc/free,为什么还需要new/delete?

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可
用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,只用malloc/free无法满足动态对象的要求。对象在创
建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库
函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强
加于malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完
成清理与释放内存工作的运算符delete。new/delete不是库函数,而是运算符。

8.this指针
(1)This指针本质是一个函数参数,只是编译器隐藏起形式的,语法层面上的参数。
this只能在成员函数中使用,全局函数、静态函数都不能使用this。

(2)this在成员函数的开始前构造,在成员的结束后清除。这个生命周期同任何一个函
数的参数是一样的,没有任何区别。当调用一个类的成员函数时,编译器将类的指针作为函
数的this参数传递进去。

(3)this指针并不占用对象的空间。this相当于非静态成员函数的一个隐函的参数,不占对象的空间。它跟对象之间没有包
含关系,只是当前调用函数的对象被它指向而已。this指针会因编译器不同而有不同的放置位置。可能是堆、栈,也可能是寄存器。

9.以下代码的输出结果是什么

输出结果为:10,10,9,0。y=i++在循环体内,第二次循环时才执行。

10. 编程实现单链表删除节点。

11. 单链表插入节点。

转载于:https://www.cnblogs.com/K2154952/p/4777979.html

C/C++笔试经典程序(二)相关推荐

  1. 都2023年了,你如果还不知道这18个C语言入门经典程序就亏了

    作为一个C语言初学者,如何学代码很重要!俗话说得好,当我刷完每一年的题,就没有我不会的题了,而C语言不需要这么麻烦,他需要记得东西其实不多,基本是哪个就是几个常见的语句加上一些关键字而已.你所看那些大 ...

  2. linux找出重复数字,C语言笔试经典-查找多位数重复数字以及次数

    从键盘输入一个多位的整数 用程序判断 这个数里面有没有 重复的数字  有重复的数字就打印  哪个数字重复了  重复了几次 例如:输入:1122431 打印结果: 1重复 出现3次 2重复 出现2次, ...

  3. c语言sort函数_C语言的那些经典程序 第八期

    戳"在看"一起来充电吧! C语言的那些经典程序 第八期 上期带大家欣赏的指针经典程序,感觉如何?这期我们准备了几个新指针的内容,灵活运用指针可以大大减少程序的复杂度,接下来就让小C ...

  4. java期末考试2013及答案_java笔试经典(题及答案)2013.doc

    java笔试经典(题及答案)2013.doc Java笔试经典(基础部分及答案和分析)1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?7答:可以包括多个 ...

  5. c语言中stible什么作用,C语言经典程序片段

    C语言经典程序片段 for(k=2;ki;k+)if(i%k=0)break;if(k=i)s=s*i; return s;36. 求一个n位自然数的(n28)long i,k;long s=1;fo ...

  6. 快要C语言考试了,大学生们收好这些经典程序案例,包你考试过关!

    距离考试越来越近 编程大佬早已饥渴难耐 电脑小白还在瑟瑟发抖 但是不要怕! 来看看这些经典程序案例 包你考试过关! [程序1] 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多 ...

  7. c语言片段,C语言经典程序片段.docx

    C语言经典程序片段 以下程序只能出了实现程序功能的核心语句,请掌握其编程思想. 编写函数fun求1!+2!+3!+--+n!的和,在main函 数中由键盘输入n值,并输出运算 结果.请编写fun函数. ...

  8. Hibernate面试题经典汇总(二)

    Hibernate面试题经典汇总(二) 1.下面不属于持久化的是( a) A.把对象转换为字符串的形式通过网络传输,在另一端接收到这个字符串后能把 对象还原出来 B.把程序数据从数据库中读出来 C.从 ...

  9. C语言和C++经典程序100案例(github推荐)

    C和c++经典程序案例分享(github推荐) 分享我在学习C/C++过程中所写的程序 以下为目录 下载地址 github Welcome to Xiao Xiaoran's C/C++ Code l ...

最新文章

  1. DPDK — 在 NFV 中的应用
  2. +1.1向量 链表 数组
  3. PHFRefreshControl
  4. php-cli下载,php-cli-color
  5. 老牌社交网站Friends Reunited宣布关闭
  6. 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】
  7. c语言const常量用法,C++ const常量在多文件编程中的3种用法
  8. 在Linux中smbfs文件系统的挂载
  9. 摸索Detours 3:使用Detours 采用dll 方式进行Hook
  10. 少儿编程之Scratch入门汇总篇
  11. 那天柠檬果第一次成熟,真像是几经磨难摘来的“仙人果”。
  12. 柱状图柱子上面显示数字
  13. Unity MMO游戏架构设计之角色设计一
  14. vue实现纯前端导入与解析excel表格文件,导出Excel
  15. Shell IFS变量
  16. 微信小程序毕业设计 基于javaweb后台网上书店图书商城小程序系统毕业设计
  17. 服务器七雄争霸官方网站,七雄争霸特效城堡半价购买 全新服务器等您来挑战...
  18. 1万+字原创读书笔记,机器学习的知识点全在这篇文章里了
  19. Pytorch-Lightning--Tuner
  20. java的resize函数_Java源码解析HashMap的resize函数

热门文章

  1. LinkedHashMap转对象
  2. Zookeeper 3.6.0启动时 8080端口被占用
  3. Nginx: error while loading shared libraries: libpcre.so.1解决
  4. linux查看共享内存max,浅析Linux的共享内存与tmpfs文件系统
  5. SQL 个版本下载地址
  6. 2018四川高考文科21题
  7. 2018全球100个最有价值的科技品牌榜:阿里当选中国科技品牌NO.1
  8. Mac下sudo后环境变量失效的问题
  9. C++ Error: error LNK2019: unresolved external symbol
  10. GCD(Grand Central Dispatch)和Block 使用-浅析