突破编程_C++_面试(基础知识(4))

面试题6:delete 与 delete[] 的区别

delete 和 delete[] 都用于释放动态分配的内存的操作符。它们之间的主要区别在于它们所处理的对象类型不同。
delete 用于释放单一对象的内存。对于简单类型,计算好大小后创建内存,对于复杂结构,先调用计算并分配内存,然后在分配的内存上调用构造函数。如下为样例代码:

int* val = new int; // 使用 new 分配一个整型内存   
delete val; 		// 使用 delete 释放内存

delete[] 用于释放对象数组的内存,如下为样例代码:

int* vals = new int[10]; // 使用 new 分配一个长度为 10 的整型数组内存  
delete[] vals; 			// 使用 delete[] 释放内存

delete[] 的原理:在使用 new[] 操作符来动态分配数组时,内存管理器会为数组分配一块连续的内存空间,这个内存空间大小并不等于对象大小*数组长度,而是多了 8 个字节( x64 编译),这 8 个字节就是数组长度。在使用 delete[] 操作符来释放这块内存时,便能够从该内存中读取数组长度,从而完整的释放整个数组占用的内存空间,并将该内存空间标记为可用。
值得注意的是多维数组的内存释放(需要使用循环):

int** vals = new int*[2];
for (size_t i = 0; i < 2; i++)
{vals[i] = new int[3]();
}for (size_t i = 0; i < 2; i++)
{delete[] vals[i];		//注意 delete 一定要加上中括号 []
}

面试题7:数组有哪些遍历方式

(1)一维数组的遍历
方式一:for 循环遍历

int vals[6]{};
for (size_t i = 0; i < sizeof(vals) / sizeof(int); i++)
{printf("%d ", vals[i]);
}

注意计算一维数组长度的方法:sizeof(vals) / sizeof(int),也可以使用 sizeof(vals) / sizeof(vals[0])
方式二:基于范围的 for 循环遍历
基于范围的 for 循环是在 C++11 标准中推出的新的语法,相比于传统的 for 循环,该方法无需关注数组的起始与长度,更适用于开发。

int vals[6]{};
for (const auto& val : vals)
{printf("%d ", val);
}

(2)多维数组的遍历
方式1:for 循环遍历
使用数组各维度长度作为循环变量的范围(推荐)

int valLists[2][3] = { 1,2,3,4,5,6 };
for (size_t i = 0; i < 2; i++)
{for (size_t j = 0; j < 3; j++){printf("%d ", valLists[i][j]);}
}

使用 sizeof 运算符计算,但是需要注意计算方法(不推荐,计算较为复杂)

int valLists[2][3] = { 1,2,3,4,5,6 };
for (size_t i = 0; i < sizeof(valLists)/ sizeof(valLists[0]); i++)
{for (size_t j = 0; j < sizeof(valLists[0]) / sizeof(int); j++){printf("%d ", valLists[i][j]);}
}

方式2:基于范围的 for 循环遍历
基于范围的 for 循环是用于多维数组更为方便,不需要考虑每个维度的长度。

int valLists[2][3] = { 1,2,3,4,5,6 };
for (const auto& vals : valLists)
{for (const auto& val : vals){printf("%d ", val);}
}

面试题8:什么是动态数组?如何在C++中实现动态数组

动态数组是指在运行时大小可以改变的数组。与静态数组不同,动态数组的大小是可以在程序运行时被修改,而不是在编译时确定的。可以使用 C++ 标准库中的 std::vector 来实现动态数组。
std::vector 提供了类似于数组的接口,但可以在运行时动态地调整大小。使用 std::vector 可以方便地添加、删除和访问元素,同时它还提供了许多有用的成员函数,如 push_back() 、 pop_back() 、 resize() 等。如下为样例代码:

#include <iostream>
#include <vector>using namespace std;int main()
{// 创建包含 6 个元素的vectorvector<int> vals = { 1, 2, 3, 4, 5, 6 };// 访问数组中的元素  vals[0] = 10;vals[1] = 15;// 向数组中添加元素  vals.push_back(20);vals.push_back(21);vals.push_back(22);// 遍历数组并输出每个元素  for (auto it = vals.begin(); it != vals.end(); it++){printf("%d ", *it);}printf("\n");return 0;
}

上面代码输出:

10 15 3 4 5 6 20 21 22

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

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

相关文章

机器学习入门-----sklearn

机器学习基础了解 概念 机器学习是人工智能的一个实现途径 深度学习是机器学习的一个方法发展而来 定义:从数据中自动分析获得模型,并利用模型对特征数据【数据集:特征值+目标值构成】进行预测 算法 数据集的目标值是类别的话叫做分类问题;目标值是连续的数值的话叫做回…

【React】前端React 代码中预览展示excel文件

封装了ExcelView来展示excel文件&#xff0c;支持显示loading 1.安装依赖 npm i js-preview/excel源码 import React, { useEffect, useRef, useState } from react import jsPreviewExcel, { JsExcelPreview } from js-preview/excel import js-preview/excel/lib/index.cs…

yum命令下载出现Failed to synchronize cache for repo ‘AppStream‘, ignoring this repo.

修改下面的配置文件 问题&#xff1a; cd /etc/yum.repos.d 修改下面四个文件 vim CentOS-Base.repo vim CentOS-AppStream.repo vim CentOS-Extras.repo vim CentOS-PowerTools.repo测试yum是否正常 yum -y install wget

MATLAB知识点:矩阵的拼接和重复

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章 3.3.4 矩阵的拼接和重复 有时候我们需要对多个矩…

word调整论文格式的记录

页眉的分章显示内容 效果&#xff1a; 步骤&#xff1a; 确保“显示/隐藏的标记”符号打开点亮 前提是章节前面有“分节符&#xff08;下一页&#xff09;”&#xff0c;没有则添加&#xff0c;在菜单栏“布局”——》“下一页” 添加页眉&#xff0c;双击页眉&#xff0c;选…

Cocos XR的WebBox实现流程

1. 正常3D场景下的webview 1.1 组件角色 Cocos Creator正常3D场景下只有在UI组件才支持webview&#xff0c;即作为下图中的UI Nodes(Canvas Node)的子节点&#xff0c;和3D组件是隔离开的&#xff0c;不能显示在3D空间中&#xff0c;UI Nodes(Canvas Node)是一个平面内的矩形…

饮水设备维修标书:保障健康水源的守护者

在现代办公和生活环境中&#xff0c;饮水设备已成为不可或缺的一部分。它们不仅提供了便捷的饮水方式&#xff0c;更是健康生活的保障。然而&#xff0c;随着使用频率的增加&#xff0c;饮水设备的维护和维修变得尤为重要。 一、标书概述 标书&#xff0c;即招标文件&#xf…

jsp 样衣申请与归还管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 样衣申请与归还管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为My…

链表——C语言——day17

链表 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。在用数组存放数据时&#xff0c;必须事先定义固定的长度&#xff08;即元素个数&#xff09;。链表则没有这种缺点&#xff0c;它根据需要开辟内存单元。 链表有一个“头指针“变量&#xff0c;图中…

【力扣白嫖日记】SQL

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1407.排名靠前的旅行者 表&#xff1a;Users 列名类型idintnamevarchar id 是该表中具有唯一值的列。name …

whale-quant 学习 part7:量化回测

量化回测 计算策略评估指标聚宽平台量化回测实践策略实现 参考 计算策略评估指标 使用数据为&#xff1a;贵州茅台&#xff08;600519.SH&#xff09;、工商银行&#xff08;601398.SH&#xff09;、中国平安&#xff08;601318.SH&#xff09;&#xff0c;策略基准是沪深300指…

正则表达式与文本处理工具

目录 引言 一、正则表达式基础 &#xff08;一&#xff09;字符匹配 1.基本字符 2.特殊字符 3.量词 4.边界匹配 &#xff08;二&#xff09;进阶用法 1.组与引用 2.选择 二、命令之-----grep &#xff08;一&#xff09;基础用法 &#xff08;二&#xff09;高级用…

【国产MCU】-CH32V307-通用DMA控制器及使用

通用DMA控制器及使用 文章目录 通用DMA控制器及使用1、通用DMA控制器介绍2、DMA驱动API介绍3、DMA使用实例直接存储器访问控制器(DMA)提供在外设和存储器之间或存储器和存储器之间的高速数据传输方式,无须CPU 干预,数据可以通过DMA 快速地移动,以节省CPU 的资源来做其他操…

MySQL中去除重复(十一)

MySQL中去除重复(十一) 一、相同的行 我们要去除相同行要使用DISTINCT关键字 SELECT DISTINCT 列名 FROM 表名; distinct 是针对查询的结果集合进行去重而不是针对某一行或者某一列。 二、查询中的行选择 用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个 必须满…

OpenFeign学习使用

使用 父依赖 parent-project <properties><spring-boot.version>2.5.6</spring-boot.version><spring-cloud.version>2020.0.4</spring-cloud.version> </properties><dependencyManagement><dependencies><dependency&g…

实用性再提升!DURATION 数据类型现已支持交易日历!

DolphinDB 自 2.00.9/1.30.21 版本开始&#xff0c;提供交易日历功能&#xff0c;并内置世界五十多个交易所的交易日历。借助交易日历&#xff0c;用户可以在 DolphinDB 中便捷查询指定范围内的交易日&#xff0c;或搭配内置函数&#xff0c;基于交易日进行日期偏移计算、数据采…

企业微信设置机器人通过winform提醒WxWorkBOT

配置文件 private static string url ConfigurationManager.AppSettings["WxWorkBOTUrl"].ToString().Trim();启动发送 /// <summary>/// 初始加载 /// </summary>/// <param name"sender"></param>/// <param name"e&qu…

Tarjan算法学习笔记

目录 无向图的割点与桥 时间戳&#xff1a; 搜索树&#xff1a; 追溯值&#xff1a; 割边判定法则&#xff1a; 割点判定法则&#xff1a; 无向图的双连通分量 定理&#xff1a; 边双连通分量(e-DCC)的求法&#xff1a; e-DCC的缩点&#xff1a; 有向图的连通性 追…

智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案

随着2024年春运帷幕的拉开&#xff0c;不少人的返乡之旅也即将开启&#xff0c;从这几日的新闻来看&#xff0c;高速上一路飘红。伴随恶劣天气&#xff0c;加上激增的车流&#xff0c;极易导致高速瘫痪&#xff0c;无法正常使用。为解决此问题&#xff0c;助力高速高效运营&…

一些你可能用到的函数和头文件

对于排序想必大家应该挺熟悉的&#xff0c;如果要是给一连串打乱的整数让你由小到大排序&#xff0c;常见的方法有冒泡排序法和选择排序法等&#xff0c;今天我就给大家介绍一个十分好用的方法&#xff0c;就是使用 sort 函数来进行快排。 sort 函数是位于头文件 #include <…