面试经验小结

news2025/2/27 13:57:15

1、为什么C++有重载而C语言没有?

C++的编译过程中,将函数名后面的数据类型也加入到了编译阶段。

2、用异或完成两个数的数值交换。

x^=y;
y^=x;
x^=y;

3、数组指针与指针数组;函数指针与指针函数

4、segment fault 段错误由什么原因引起?

本质原因:程序访问了非法的地址。造成访问非法地址的原因有多种:

  1. 引用了空指针;
  2. 野指针;
  3. 访问越界

5、构造函数与析构函数在继承里的相关内容

继承中构造和析构顺序如下:先构造父类,再构造子类;先析构子类,再析构父类。

C++核心编程类和对象的继承

6、关于指针的相关操作

void point() {
	int a[5] = { 1,2,3,4,5 };//int型数组
	int* p[5] = { a,a + 1,a + 2,a + 3,a + 4 };//int*型数组

	//数组的下标操作
	cout << "a[0]= " << a[0] << endl;

	cout << "数组a的首地址: " << a << endl;
	//对指针+2,32位系统下指针大小为4个字节,实际地址相差了8个字节
	cout << "a+2 :"<< a + 2 << endl;
	//对该地址下取值
	cout << "*(a+2)= " << *(a + 2) << endl;

	//p数组里存的是int型指针,p[1]即为a+1,是一个地址,对地址取值
	cout << "*p[1]= " << *p[1] << endl;

	//p+3为数组p[3]的地址,*(p+3)为p[3]的值,即为a+3
	//那么**(p+3)实际为*(a+3)=4
	cout << "**(p+3)= " << **(p + 3) << endl;

	cout << "*(p+0)= " << *(p + 0) << endl;
	cout << "*(p+4)= " << *(p + 4) << endl;
	//*(p+4)为p[4]-p[0],int*指针相减 
	cout << " *(p+4) - *(p+0)= " << *(p + 4) - *(p + 0) << endl;

}

运行结果如下图:

7、关于malloc函数相关

void fun(char* p) {
	*p = (char*)malloc(100*sizeof(char));
}

int main() {
	char* ptr;
	fun(ptr);
	strcpy(ptr, "helloworld");
	printf("%s",ptr);
}

1.指针使用的时候没有初始化,存在风险;

2.malloc函数分配内存成功时返回值是void*,失败时返回值是NULL,可以加个判断防止空指针异常;

3.函数 fun 中分配了新的内存,但它仅仅在函数内部被使用,函数结束后指针 p 的值(即分配的内存地址)被丢弃了,并没有传回到调用函数 main 中,导致 ptr 仍然是一个空指针,指向未分配的内存。

void fun(char** p) {
	*p = (char*)malloc(100*sizeof(char));
}

int main() {
	char* ptr=nullptr;
	fun(&ptr);
	strcpy(ptr, "helloworld");
	printf("%s",ptr);
	free(ptr);  // 释放内存
	return 0;
}

在 main 函数中调用 fun 时,传递指向 ptr 的指针的地址,函数 fun 中分配的内存块的地址赋值给了这个指针所指的变量 ptr,然后就可以使用该地址进行内存读写操作。使用完后,需要手动释放内存。

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

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

相关文章

jdk15至17——sealed密封关键字

sealed关键字是从jdk15开始预览&#xff0c;直到jdk17成为正式版&#xff0c;可以对继承父类和实现接口进行更加细粒度的限制&#xff0c;之前的限制也只有final用于禁止继承&#xff0c;默认包权限限制在同一个包内&#xff0c;sealed密封类/接口可以明确指定哪些类可以进行继…

C# 调用Matlab打包的 DLL文件(傻瓜式操作)

1、准备Matlab代码 2. 打包 在matlab命令行窗口输入deploytool,打开MATLAB Complier,选择Library Compiler 在TYPE中选择.NET Assembly;在EXPORTED FUNCTIONS中选择要打包的文件&#xff1b;可以选择为自己打包的文件自定义NameSpace名称&#xff0c;本例中将NameSpace定义为…

Google Earth Engine(GEE):大数据林业应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

AcrelCloud-9500电瓶车充电桩收费平台 在苏州市某拆迁小区的应用

摘 要&#xff1a;全国各地电瓶车充电引发火灾的事故时有发生&#xff0c;对人民群众的生命财产安全造成了很大的威胁&#xff0c;本文介绍的苏州市某拆迁小区&#xff0c;是海虞镇为创建市级消防安全“331”示范社区选定的社区&#xff0c;该社区采用4G通信方式与服务器进行通…

一篇文章带你看懂5G网络(接入网+承载网+核心网)

通过这张网络简图帮助大家认识一下全网的网络架构&#xff0c;通过对全网架构的了解&#xff0c;将方便您对后面每一块网络细节的理解。 这张图分为左右两部分&#xff0c;右边为无线侧网络架构&#xff0c;左边为固定侧网络架构。 无线侧&#xff1a;手机或者集团客户通过基站…

mysql安装8.**版本

1. 下载MySQL 8.0.22 源码包: wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22.tar.gz https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22.tar.gz 2. 解压源码包: tar -zxvf mysql-8.0.22.tar.gz -C /usr/local 3. 创建用于编译的构建目录: …

LDO基本知识

本文引用TI文档 压降 压降电压 VDO 是指为实现正常稳压&#xff0c;输入电压 VIN 必须高出 所需输出电压 VOUT(nom) 的最小压差。 如果 VIN 低于此值&#xff0c;线性稳压器将以压降状态工作&#xff0c;不再调 节所需的输出电压。在这种情况下&#xff0c;输出电压 VOUT(drop…

【Docker】进入docker容器

进入已经在运行的docker容器 1、查看所有在运行的docker容器 docker ps2、进入指定的docker容器 docker attach 容器CONTAINERID docker attach 8ad850b602ff查看log docker logs -f 8ad850b602ff

普通本科机械设计毕业生,如何零基础转行数据分析?

作为本科生转行数据分析还是比较容易的&#xff0c;我们数据分析班里本科生占了一大半&#xff0c;专业也都是非计算机相关的&#xff0c;有机械、机电、会计、金融等专业的应届生&#xff0c;基本对于计算机方面接触都不算多&#xff0c;专业方面肯定都是零基础&#xff0c;会…

【案例教程】R语言在生态环境领域中的实践技术应用

R语言作为新兴的统计软件&#xff0c;以开源、自由、免费等特点风靡全球。生态环境领域研究内容广泛&#xff0c;数据常多样而复杂。利用R语言进行多元统计分析&#xff0c;从复杂的现象中发现规律、探索机制正是R的优势。为此&#xff0c;本课程以鱼类、昆虫、水文、地形等多样…

Scrapy CrawlSpider介绍和使用

一、介绍CrawlSpider CrawlSpider其实是Spider的一个子类&#xff0c;除了继承到Spider的特性和功能外&#xff0c;还派生除了其自己独有的更加强大的特性和功能。其中最显著的功能就是”LinkExtractors链接提取器“。Spider是所有爬虫的基类&#xff0c;其设计原则只是为了爬取…

【Nodejs】Node-js概述

Node.js 文章目录 Node.js一、Node.js概述1.1、介绍1.2、官网1.3、Node.js应用场景1.4、安装Node.js1.5、npm包管理器1.5.1、介绍1.5.2、切换npm源1.5.3、生成JSON配置文件1.5.4、查看当前安装的树形模块1.5.5、安装模块1.5.6、自定义脚本命令1.5.7 、自动重启应用 1.6、模块化…

机房管理技能,医疗行业必备!

机房是一个很复杂的地方&#xff0c;存放设备数量大且杂&#xff0c;再加上大量使用电&#xff0c;机房存在各种各样的隐患&#xff0c;给机房管理带来极大的难度。 因此&#xff0c;想要很好的管理机房、避免机房出现各种危险&#xff0c;就需要应用机房动环监控系统&#xff…

MT8395(Genio 1200)处理器性能参数介绍

MT8395(Genio 1200)是一款专为AI与高性能物联网应用而设计的通用型SoC&#xff0c;采用6nm制程工艺&#xff0c;已集成四核A78和四核A55的八核CPU。Genio 1200还集成Mali-G57图形处理器&#xff0c;内置独立的双核AI处理器&#xff0c;可应用于智能家电、中控设备、商业显示、工…

如何在Windows 11更新后解决C盘已满的问题?

Windows 11比Windows 10需要占用C盘更多的空间&#xff0c;在升级到Windows 11后&#xff0c;如果升级后出现问题&#xff0c;安装程序可以帮你退回到Windows 10。无论怎样&#xff0c;在升级到Windows 11后&#xff0c;系统会自动制作以前的数据的副本&#xff0c;这会占用大量…

chatgpt赋能python:Pythonshowinfo:了解Python中弹出消息框的方法以及使用场景

Python showinfo: 了解Python中弹出消息框的方法以及使用场景 Python是一种著名的编程语言&#xff0c;用来编写各种应用程序和脚本。在Python中&#xff0c;弹出消息框是一种帮助开发人员和用户更好地交互的常见方法之一。showinfo是Python中的一个函数&#xff0c;它可以用来…

chatgpt赋能python:Python与SICP:重塑编程的未来

Python与SICP&#xff1a;重塑编程的未来 介绍 随着现代生活的发展&#xff0c;计算机在我们的生活中扮演越来越重要的角色。而Python语言则成为了众多开发者使用的首选语言。作为一门高级编程语言&#xff0c;Python在开发业界广受欢迎&#xff0c;并且得到了MIT计算机科学家…

成年人自学黑客,远比你想的更难......

什么是黑客 Hacker一词&#xff0c;最初曾指热心于计算机技术、水平高超的电脑高手&#xff0c;尤其是程序设计人员 黑客演变出哪些类型 白帽黑客 白帽黑客是指通过实施渗透测试&#xff0c;识别网络安全漏洞&#xff0c;为政府及组织工作并获得授权或认证的黑客。他们也确保…

1123 Is It a Complete AVL Tree (PAT甲级)

这道题是看了柳婼的解法才搞定的。开始想着把height和parent放到结构体中去&#xff0c;很繁琐最后还搞不定…… #include <cstdio> #include <algorithm> #include <vector>struct node{int key;node* left nullptr;node* right nullptr; };int N, t, pi…

【Netty】字节缓冲区 ByteBuf (六)(上)

文章目录 前言一、ByteBuf类二、ByteBuffer 实现原理2.1 ByteBuffer 写入模式2.2 ByteBuffer 读取模式2.3 ByteBuffer 写入模式切换为读取模式2.4 clear() 与 compact() 方法2.5 ByteBuffer 使用案例 总结 前言 回顾Netty系列文章&#xff1a; Netty 概述&#xff08;一&…