c++函数(一)习题讲解

1.【单选题】

void swap (int a,int b)

{

        a = a ^ b;

        b = a ^ b;

        a = a ^ b;

}

int a {120},b {130};

swap{a,b};

a=? b=?

A 120,130         B 130,120         C130,0

解析:这道题中,函数体的内容是交换两个变量的值,采用的是位运算的方法,但因为传递的参数是值传递,所以并不能改变实参的值,所以选A。

2.【单选题】

void Add (int* a,int * b)

{

        a = b;

}

int a = 250,b = 350;

int* pa = &a;

Add ( pa, &b);

Pa[0] = ?

A 350         B 250         C 0

解 析:这道题比较难,很多人会选择A,但是这是的错误的选项,正确答案是B。函数体内部指针 a 等于指针 b,但是 a 仍然是一个局部变量,和它传入的指针 pa 并没有什么关系,仍然是值传递,无法改变变量的值。 

3.【单选题】

void Add (int* &a, int *b)

{

        a = b;

}

int a = 250, b = 350;

int* pa = &a;

Add ( pa, &b);

Pa [0] = ?

A 350         B 250         C 0

解析:这道题和上道题一样,只不过这次函数的形参为变为了 指针的引用,这个时候指针形参 a 就相当于 pa 的别名,a 可以改变 pa 的值,所以这道题选A。 

4.【单选题】

void Add(int& a)

{

        a++;

}

int a = 250;

Add(a);

说法正确的是:

A 最后 a = 251        B 最后 a = 250         C 程序不能运行

解析:这道题就比较简单了,Add 函数使用了一个引用参数 int& a,它允许函数直接访问和修改传入的变量的值,所以选A。

5.【单选题】

int main ( int argcount, char* c_ arg[])

{

        std::cout << argcount << std::endl;

        // 此时屏幕显示2

        int a = (int) c_arg[argcount];

        a = ?

}

A.0         B.无法确定         C.1

解析:这道题考察main函数参数的知识,这里我有专门的知识详解,具体参考我之前写的文章c++中main(int argc, char* argv[])参数详解,argcount 为 2,说明有 c_ arg数组有两个字符串,一个是运行文件名,另一个不确定,但是要求第三个元素,答案是0。

6.【单选题】

typedef int (*pAdd)(int,int);

pAdd p;

p可以指向下面哪个函数?

A void Add( int a, int b);

B int Add ( int a, int b);

C int Add( float a,f loat b);

解析:这道题用 typedef 定义了一个函数指针。很明显返回值类型和参数都为 int 类型,答案选B。

7.【单选题】

typedef int (*pAdd)(int, int);

int Add(int a, int b)

{

        return a  + b;

}

std::cout << Add;

屏幕显示50000

pAdd x = (pAdd)0x50000;

int c = x(100,200);

c = ?

A.100         B.200         C.300

解析:这道题答案是C,很简单。但是这道题的来意是弄明白函数的本质是什么,函数的本质就是内存,编译好后就把我们的代码翻译成为了二进制代码,这里 0x50000 就表示函数的首地址,然后通过(pAdd)类型转换为 x 函数。

8.【单选题】

int* Add()

{

        int* x = new int [100];

        return x;

}

以下说法正确的是:

A 这种写法是错误的,x是一个局部变量指针,返回可能会出错

B 这种写法是正确的

C 这种写法是错误的,应该return &x;

解析:这道题选B。Add 函数返回的是一个指针地址,这里 x 虽然是一个局部变量,但是 new 动态申请的内存地址并不会消失,return x 返回的仅仅是 x 的值,所以这种写法可以。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中泛型的概念和使用场景

技术难点 Java中的泛型&#xff08;Generics&#xff09;是JDK 5.0引入的一项新特性&#xff0c;它允许在定义类、接口和方法时使用类型参数&#xff08;type parameters&#xff09;。泛型的主要技术难点在于类型擦除&#xff08;type erasure&#xff09;和类型推断&#xf…

Day48

Day48 手写Spring-MVC之前后置处理器与异常处理 前后置处理器 概念&#xff1a;从服务器获取的JSON数据可能是加密后的&#xff0c;因此服务端获取的时候需要进行解密&#xff08;前置处理器&#xff09;。 而从服务器传出的JSON数据可能需要加密&#xff0c;因此需要在处理返…

VMware虚拟机迁移:兼用性踩坑和复盘

文章目录 方法失败情况分析&#xff1a;参考文档 方法 虚拟机关机&#xff0c;整个文件夹压缩后拷贝到新机器中&#xff0c;开机启用即可 成功的情况&#xff1a; Mac (intel i5) -> Mac (intel i7)Mac (intel, MacOS - VMware Fusion) -> DELL (intel, Windows - VMw…

Zynq7000系列FPGA中的DMA控制器简介(二)

AXI互连上的DMA传输 所有DMA事务都使用AXI接口在PL中的片上存储器、DDR存储器和从外设之间传递数据。PL中的从设备通过DMAC的外部请求接口与DMAC通信&#xff0c;以控制数据流。这意味着从设备可以请求DMA交易&#xff0c;以便将数据从源地址传输到目标地址。 虽然DMAC在技术…

mysql5.7安装使用

mysql5.7安装包&#xff1a;百度网盘 提取码: 0000 一、 安装步骤 双击安装文件 选择我接受许可条款–Next 选择自定义安装&#xff0c;下一步 选择电脑对应的系统版本后(我的系统是64位)&#xff0c;点击中间的右箭头&#xff0c;选择Next 选择安装路径–Next 执行…

.NET之C#编程:懒汉模式的终结,单例模式的正确打开方式

概述 在C#编程世界中&#xff0c;单例模式是一种常见的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。然而&#xff0c;传统的懒汉模式实现方式在多线程环境下存在安全隐患。本文将深入探讨单例模式的正确实现姿势&#xff0c;带你走出懒汉…

matlab可以把图像数据转换为小波分析吗

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

【后端面试题】【中间件】【NoSQL】ElasticSearch 节点角色、写入数据过程、Translog和索引与分片

中间件的常考方向&#xff1a; 中间件如何做到高可用和高性能的&#xff1f; 你在实践中怎么做的高可用和高性能的&#xff1f; Elasticsearch节点角色 Elasticsearch的节点可以分为很多种角色&#xff0c;并且一个节点可以扮演多种角色&#xff0c;下面列举几种主要的&…

【软件测试】白盒测试(知识点 + 习题 + 答案)

《 软件测试基础持续更新中》 最近大家总是催更……&#xff0c;我也是百忙之中给大家详细总结了白盒测试的重点内容&#xff01; 知识点题型答案&#xff0c;让你用最短的时间&#xff0c;学到最高效的知识&#xff01; 整理不易&#xff0c;求个三连 ₍ᐢ..ᐢ₎ ♡ 目录 一、…

Spring专题一:源码编译

下载源码 因为公司使用的是Spring5.2.x所以就下载了这个版本&#xff0c;github源码地址如下&#xff1a; GitHub - spring-projects/spring-framework at v5.2.6.RELEASE&#xff1a; 如果网络不稳定可以使用下载压缩版即可&#xff0c;网络稳定的话还是建议使用git clone …

JDBC中的元数据是什么?如何获取?

JDBC中的元数据&#xff08;MetaData&#xff09;是关于数据的数据&#xff0c;它描述了数据库的结构、表的结构、列的数据类型、存储过程、支持的SQL语法和数据库产品的版本等信息。元数据在JDBC中主要通过DatabaseMetaData和ResultSetMetaData两个接口来获取。 1. DatabaseM…

代理IP用什麼協議?

代理IP的運作主要依賴兩種協議&#xff1a;HTTP代理協議和SOCKS代理協議。 HTTP代理協議 HTTP代理協議是最常見的代理協議。它主要用於HTTP請求&#xff0c;即我們常說的網頁流覽。當你通過HTTP代理伺服器訪問網站時&#xff0c;你的設備會先向代理伺服器發送HTTP請求&#x…

【redis】redis RDB

1、概述 1.1定义 RDB (Redis Database) 是 Redis 的默认持久化机制&#xff0c;它能够在指定的时间间隔内将内存中的数据集快照写入磁盘。RDB 持久化产生的文件是一个经过压缩的二进制文件&#xff0c;通过该文件可以还原生成 RDB 文件时的数据库状态。 1.2特点 一次性全量备…

RStudio学习笔记(三):其他数据结构

1、矩阵 在R语言中&#xff0c;矩阵是二维的&#xff0c;包括行和列&#xff0c;其中分为数值型、字符型、逻辑型三种&#xff0c;在每个矩阵中的矩阵元素的类型必须一致&#xff0c;可以通过matrix函数创建矩阵。 m <- matrix(1:20, nrow 4, ncol 5) # 创建一个四行…

【工具分享】SQLmap

文章目录 工具介绍安装方式环境准备安装 sqlmap 工具介绍 sqlmap 是一个非常强大的自动化 SQL 注入工具&#xff0c;主要用于渗透测试和安全审计。它能够检测和利用 SQL 注入漏洞&#xff0c;进而访问数据库服务器。 GitHub&#xff1a;https://github.com/sqlmapproject/sql…

JS:防抖与节流函数的实现与应用

一、防抖 防抖&#xff1a;一连串操作只执行一次。通过设置一个延迟时间&#xff0c;如果这段时间没有再次执行操作则运行目标函数&#xff0c;否则重新计时。 下面是一个防抖函数代码&#xff1a; let a1; const add () > {a; }; const debounce (fun: Function, dela…

Everything 一款功能强大的搜索工具

要在电脑上使用Everything搜索文件&#xff0c;您需要使用以下步骤&#xff1a; 在您的电脑上下载并安装Everything软件。您可以从官方网站https://www.voidtools.com/downloads/下载最新版本的软件。 安装完成后&#xff0c;打开Everything软件。 在搜索栏中输入您要查找的文…

Java中如何处理大数据量的排序?

Java中如何处理大数据量的排序&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们来讨论一下在Java中如何处理大数据量的排序问题…

JsonCpp:更简洁的序列化及反序列化

简介 jsoncpp 提供了一组简单易用的 API&#xff0c;使得在 C 程序中处理 JSON 数据变得更加方便和高效。 安装 linux环境下安装jsoncpp sudo apt-get update sudo apt-get install --reinstall libjsoncpp-dev建立软链接确保编译器找到头文件 #include <json/json.h>…

Java数据结构6-栈与队列

1. 栈(Stack) 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则 压栈…