面试题

十四届蓝桥青少stema1月选拔赛 当给出最低氧气限量值M(1<=M<=30)和最低燃料限量值 N(1<=N<=80),生存装备的数量K(1<=K<=1000)及每个生存装备中氧气值a(1<=a<=30)、燃料值b(1<=b<=80)及装备重量c(1<=c<=100),请计算出机战士要完成任务所需要携带的生存装备的总重量最低是多少,并输出这个最低值。第三行开始输入K行,每行包括3 个正整数 a,b,c(1<=a<=30,1<=b<=80,1<=c<=100),分别表示生存装备中氧气值和燃料值及装备的重量。 阅读详情

 谁给说说这几个函数的内存问题到底是怎么回事。。。

题目一:

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

void Test(void)
{
	char *str=NULL;
	GetMemory(str);
	strcpy( str, "hello world" );
	puts(str);
}

调用GetMemory(); 函数的时候,把str指针赋值给了指针p,然后在函数内部,动态申请了一个空间,让指针p指向了这块空间,但是str并没有指向这块空间,GetMemory函数内部操作的是指针p,并不是指针str,所以调用strcpy函数将hello world 拷贝到str指向的空间的时候,发生了内存访问失败的问题。调用函数GetMemory的时候,指针str赋值给了指针p,这是,指针p跟指针str指向同一个地方;GetMemory函数内部,修改了指针p的指向,使其指向了一块动态开辟的空间,而指针str并没有指向新开辟的空间。因为str只是一个指针,并没有指向内存空间,所以strcpy的拷贝功能失败,程序无法运行。。。

可以将指针str的引用传给指针p,这样GetMemory函数内部的对指针p的操作就等价于对指针str的操作。

void GetMemory( char *&p)     //对指针的引用,函数内部对指针p的修改就等价于对指针str的修改
{
	p = (char *) malloc( 100 );
}

void Test(void)
{
	char *str=NULL;
	GetMemory(str);
	strcpy( str, "hello world" );
	puts(str);
}

题目二:

char *GetMemory( void )
{
	char p[] = "hello world";
	return p;  
}

void Test( void )
{
	char *str = NULL;
	str = GetMemory();
	puts( str );
}

p数组是在函数内部临时声明的,属于栈上的临时变量,函数结束后就销毁了。GetMemory函数返回后,将那个p数组销毁了,里面的内容自然就没有了,只是返回了数组的首地址给str指针,此时str就是一个野指针,每次输出的内容都不一样的。。
修改为下面的代码就可以正确输出hello world了,这就是上一篇文章中讲的------char *str和char str[]的区别了。。

char *GetMemory( void )
{
	char *p = "hello world";
	return p;  
}

void Test( void )
{
	char *str = NULL;
	str = GetMemory();
	puts(str);
}

或者将p数组声明为static 类型的也是可以正确输出hello world 的。。

char *GetMemory( void )
{
	static char p[] = "hello world";
	return p;  
}

void Test( void )
{
	char *str = NULL;
	str = GetMemory();
	puts(str);
}

题目三:

void GetMemory( char **p, int num )    //**p指向指针str的地址,也就是说**p==&str
{
	*p = (char *)malloc(num);       //*p指针就是str指针,也就是说,*p==str,这行代码实际上改变的是str指针的指向,指向了一块申请的内存空间
}

void Test( void )
{
	char *str = NULL;
	GetMemory(&str,100);
	strcpy(str, "hello world");
	puts(str);  
}

使用的是指针的指针的理论,这个是可以正确输出hello world 的。。
题目四:

void Test( void )
{
	char *str = (char *) malloc(100);
	strcpy( str, "hello world" );
	puts(str);
	free( str );
}

这个是可以正确输出hello world 的。。

题目五:写出运行结果

#include "iostream"
using namespace std;

int main(void)
{
	char str[] = "world";
	cout << sizeof(str) << ": ";
	char *p = str;
	cout << sizeof(p) << ": ";
	char i = 10;
	cout << sizeof(i) << ": ";
	void *pp = malloc(10);
	cout << sizeof(pp) << endl;

	system("pause");
	return 0;
}

输出的结果为 6:4:1:4

运维开发面试题整理 Python的可变与不可变数据类型 可变数据类型:列表list和字典dict;不可变数据类型:整型int、浮点型float、字符串型string和元组tuple。 不可变数据类型分析 python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象, 阅读详情

相关推荐

Java面试题及答案(2021年Java面试题大全带答案)

01、Java有没有goto?02、JVM怎么判断一个对象是不是要回收?03、创建了几个字符串对象?04、什么是过滤器?怎么创建一个过滤器05、介绍一下 JVM 中垃圾收集器有哪些?他们特点分别是什么?06、线程池的执行原理?07、假设数组内有5个元素,如果对数组进行反序,该如何做?08、java 中 IO 流分为几种?09、你都有哪些手段用来排查内存溢出?10、GC 是什么?为什么要有 GC?此处,仅展示前10道,查看更多40道…01、CMS分为哪几个阶段?02、

m0_74824755的博客 769

【C语言】字符串、字符和相关函数及函数的模拟实现

1. 字符串 2. 转义字符 3. 字符串函数 4. 内存函数 5. 字符串与格式化数据 6. 字符串转换函数 7. 字符处理函数

Qiuhan_909的博客 1573

白帽黑客——面试题

由于我之前写了不少网络安全技术相关的文章和回答,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人私信问我:我刚入门网络安全,该怎么学?想找网络安全工作,应该要怎么进行技术面试准备?工作不到 2 年,想跳槽看下机会,有没有相关的面试题呢?为了更好地帮助大家高薪就业,今天就给大家分享三份网络安全工程师面试题,一共有260道面试真题,希望它们能够帮助大家在面试中,少走一些弯路、更快拿到offer!

zxcvbnmasdflzl的博客 390

十四届蓝桥青少C++组2月评测2023年2月中高级

给定两个正整数N和M(10≤N<M≤10000),请找出N到M之间(包含N和M)的所有正整数中,哪些正整数的各个位上的数字都为奇数,并输出N到M之间共有多少个这样的正整数。小明有一张矩形彩纸,他将彩纸均匀的画了N*M个小方格,有些小方格中被他画了小草,有些小方格是空白的,现小明想找出一片空白的方格,并且这片空白方格是最大的矩形。现给出N和M的值,及每个方格的状态,被画小草的小方格用数字1表示,空白小方格用数字0表示,请帮小明找出最大矩形,并输出最大矩形由多少个小方格组成。下列正确的引用方法是( )。

长春高老师编程 2339

C/C++常考面试题-牛客网

C/C++常考面试题

C++面试之GetMemory问题

本文主要汇总了几个 C++面试之GetMemory问题,希望对你有所帮助。

十四届蓝桥青少C++组2023年2月评测中高级

给定两个正整数N和M(10≤N<M≤10000),请找出N到M之间(包含N和M)的所有正整数中,哪些正整数的各个位上的数字都为奇数,并输出N到M之间共有多少个这样的正整数。小明有一张矩形彩纸,他将彩纸均匀的画了N*M个小方格,有些小方格中被他画了小草,有些小方格是空白的,现小明想找出一片空白的方格,并且这片空白方格是最大的矩形。现给出N和M的值,及每个方格的状态,被画小草的小方格用数字1表示,空白小方格用数字0表示,请帮小明找出最大矩形,并输出最大矩形由多少个小方格组成。下列正确的引用方法是( )。

fight_andy的博客 1105

Linux系统搭建OpenClaw(原Clawdbot)全流程指南 最新版

工具定位:开源个人 AI 助手,支持文件读取、命令执行、多渠道交互(Telegram / 本地终端等);系统要求:主流 Linux 发行版(Ubuntu/Debian/CentOS 等),Node.js ≥22(核心依赖);安全提示:OpenClaw 为测试版,具备高权限操作能力,建议使用非主力机,配置权限白名单,避免接触敏感数据。

AI时代老码农的第二春 6559

IT行业经典面试题,121套面试题

 IT行业经典面试题,121套面试题资源大小: 580.80KB资源类型:发布人: eyelife        发布日期: 2天前Tag: 名企,计算机 资源分: 10下载人数: 857 4.33/347人评分 12 3 4 5 <!--评论收藏 举报共享-->评论 分享 收藏 举报 上传

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 5241

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

xu_white的博客 7583

uni-app开发-第3篇:uni-app 页面与路由

本文详细介绍了 uni-app 中的页面开发与路由管理。首先,页面是应用的基础单元,创建页面时需在pages目录下新建文件夹和.vue文件,页面结构由<template>、<script>和<style>三部分组成。uni-app 页面生命周期函数包括onShow、onReady、onHide和onUnload,分别用于处理页面显示、渲染完成、隐藏和卸载时的逻辑。其次,路由管理通过pages.json文件配置页面路径和样式,并提供uni.navigateTo等方法进行路由

无 415

最新前端面试题、高频面试题、面试题总结

Doctype 作用HTML5 新增的内容有哪些Html5 新增的语义化标签有哪些对 HTML 语义化标签的理解行内元素/块级元素有哪些视频/音频标签的使用说一下 HTML5 drag apiES6 新特性Let 与 var 与 const 的区别Js 基本数据类型有哪些字符串数组方法有哪些请简述普通函数和构造函数的区别Ajax 如何使用 一个完整的 AJAX 请求包括五个步骤:如何判断一个数据是 NaN闭包是什么?有什么特性?对页面会有什么影响Js 中常见的内存泄漏事件委托是什么?如何确定事件源(Even

HeXinT的博客 1866

【部署】Ubuntu 24.04.4虚拟机下部署OpenClaw

OpenClaw是一款基于AI的智能助手工具,本文详细介绍了在Ubuntu 24.04.4系统上的三种安装方法。推荐使用一键安装脚本(curl -fsSL https://openclaw.ai/install.sh | bash),自动完成Node.js检测、CLI安装和引导配置。对于开发者,提供了从源码构建的详细步骤,包括环境准备、依赖安装和构建流程。文章还包含常见问题解决方案(如sharp构建错误处理)以及后续维护建议(更新、配置检查和日志查看)。安装完成后,用户可通过终端TUI或Web UI进行初始

海兰 1万+

Linux驱动开发面试题整合

Linux 驱动常见面试及答案 八个常见的Linux驱动面试题 Linux驱动面试题总结 嵌入式校招面试题 BSP开发工程师面试笔试题集 海康面试题 面试题,详细 BSP开发流程讲解

qq_40904479的博客 4072

Silvaco TCAD 半导体器件仿真全攻略:从入门到精通

本文介绍了Silvaco TCAD半导体器件仿真平台的核心功能与应用方法。主要内容包括: Silvaco TCAD的核心模块组成(ATHENA工艺仿真和ATLAS器件仿真)及其在半导体研发中的重要作用,能够通过数值仿真预测器件电学特性,显著降低研发成本。 环境配置要点,包括内存分配、文件目录管理和许可证验证,为仿真工作提供基础保障。 仿真核心概念:详细讲解了网格划分策略和物理模型选择原则,强调基于物理直觉的自适应加密网格方法。 以PN结二极管为例,提供了完整的仿真代码示例,涵盖从网格定义、掺杂设置到结果分析

huanghm88的专栏 198

网络流量异常信息分析方法研究

本课题针对网络安全中网络流量异常的分析方法进行研究,提出一种基于机器学习和深度学习的异常检测算法。该算法采用卷积神经网络(CNN)和长短时记忆神经网络(LSTM)结合的方式,通过训练得到二分类模型,从而实现对网络流量异常的检测。随着互联网的飞速发展,网络攻击事件日益增多,网络安全问题成为了亟待解决的问题之一。常见的网络攻击手段包括 DDoS 攻击、SQL 注入、XSS 攻击等,这些攻击手段可能导致网络系统发生异常,给网络运维、数据安全带来极大的挑战。

肥晨开发的学习之路 1034

Promise面试题

由于then方法是异步的,当片段一(代码中已标出)代码没有执行完,片段二是不会执行的,转而会执行片段三,由于执行片段三前已执行resolve,其实例对象状态已变为成功,因此执行片段三的then方法中第一个回调,输出8,接着回到片段一里的第一个then方法,由于已经执行resolve,其实例对象状态已变为成功,因此执行then方法,输出4,此时若片段一中第一个then没有执行完,也不会接着链式执行第二个then。重难点:3之后输出8,4之后输出6,是因为then方法是异步的,前一个没有执行完,会接着往下走。

m0_47743942的博客 1761

构建个体结构脑网络的另一种方法

这篇文献提出了一种构建个体结构脑网络的方法即Morphometric INverse Divergence (MIND),通过T1像数据即可对每个被试构建一个脑网络,且通过多个特征进行构建而非单一的特征。即可获得由4个特征得到的个体结构网络矩阵,可以根据自己的需求采用不同的特征组合得到网络矩阵,也可以结合T1/T2像得到髓鞘化相关的网络矩阵,后续可修改代码批量处理自己的数据。这是文献贴出来的代码。在终端直接克隆到本地。2.修改路径运行代码。

weixin_52073820的博客 822

面试题内容聚合

分类整理一些内容,方便需要时回过头来看,整理不易,如有疏漏,请多担待!之后要查找这篇文章,可以直接在Java知音公众号后台回复 “面试题聚合”面试技术文Java岗 面...

Java笔记虾 845

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8159

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《剑指offer》所有面试题的笔记总结

*建议:还是以书为主,然后以我的笔记为辅助。 C#不太了解,所以没放书上的代码。博文https://www.cnblogs.com/james111/p/7003100.html对这个问题分析得很全面。 思路很简单,每个元素的值就是ta应该所处的数组下标,然后不断地归位就可以了。我的笔记如下: 这个题目相比上一个题目,难在“不能修改数组”上。所以思路是这样的: 以题目中的数组为例,长度为8,范围是1~7。从中间将其范围划分成两组:1~4一组,5~7一组。然后对值为1~4和值为5~7的数字进行计

zxc120389574的博客 780

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【面试题】-java面试题总目录

前言:先吐槽一下面试吧,相信不少人都有这样的经历,其实你对某项技术已经掌握的很OK了,但在面试的时候却未必能发挥到很好,让面试官觉得你确实已经很好的掌握该技术,也就是说你实际对该技术掌握的程度有90%,但面试时表现出来的却只有30%甚至更少,这可能是表达能力的问题,但也可能很大程度是因为你没有刷面试题,有些平时几乎很少会用到地方没有涉及到刚好被问到了.就好生活中有些人开车开得很好,甚至是一些开车多...

老汉健身的博客 578

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python面试题_300道Python面试题

Python 工程师也分不同的技术岗位,初级、中级与高级开发工程师需要具备的技能也不同。这个面试题覆盖的知识点按照由易到难罗列,分为【Python 基础】与【Python 高级】。【Python 基础】 1~3 (文件操作、模块与包、数据类型)知识点,虽然被归类为基础题,但大家在实际解题过程中还需要更多的思考,是否情况都考虑全面了。高级题部分就不用说了,都是一些在学习时有难度,不能一下就 get ...

weixin_39715538的博客 1286

滴滴往届笔试面试题大全

整理了一下滴滴往届笔试面试题,希望对大家有帮助: 超级有用的面试题:Java常见面试题    常见算法面试题   数据库常见面试题  操作系统常见面试题   C/C++常见面试题  大数据常见面试   python常见面试 来源:滴滴出行笔试面试圈&gt;&gt; 1、史上最全Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库 2、2017滴滴出行春招-系统岗笔试真题汇...

wodwl的专栏 4438

Unity面试题

一、目的 1、 二、参考 1、Unity面试题总结(2020年持续更新。。。) https://blog.youkuaiyun.com/ztysmile/article/details/105866253 ①总结: 2、史上最全的Unity面试题(持续更新总结。。。。。。) 包含答案的Unity面试题 https://www.cnblogs.com/android-blogs/p/6343336.html ①总结: 三、操作 1、 ...

qq_40544338的博客 409
上一篇: 24点游戏
下一篇: 二进制在数学中的妙用
hackbuteer1
博客等级 码龄15年 1万+粉丝 251原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值