Visual C++编程初学者疑难问题大集合(二)

news2024/12/23 16:18:41

初学者在学习visual c++时问题很多,有意思的是,很多问题教材上都不说,后台有不少小伙伴问我相关问题,我于是总结一下。以供学习visual c++的小伙伴少走弯路。

问题六:怎么理解visual c++中函数的声明和定义

在复杂的程序中,如果全部的代码都写在main函数中,main函数体将非常庞大。把任务分工其它的函数中,main函数只负责程序的核心流程,具体的任务由其它函数完成。这种思想就是模块化编程。

声明和定义函数的语法:

返回值的数据类型 函数名(参数一的数据类型 参数一, 参数二的数据类型 参数二,……)

{

  实现函数功能的代码。

    return 返回值;

}

函数的声明:让编译器知道函数的存在,包括返回值的数据类型、函数名和参数列表。

函数的定义:函数的实现过程。

注意:

  1. 函数的声明和定义可以写在一起,也可以分开。如果写在一起,一般放在main函数的上面。如果分开,一般在main函数的上面声明,在main函数的下面定义。

  2. 如果函数的声明和定义分开写,函数的声明后面一定要有分号,函数的定义后面一定不能写分号。

  3. 在同一个程序中,函数只需要声明和定义一次,也可以多次声明,但只能定义一次。

  4. 函数的声明必须和函数的定义一致(返回值的数据类型、函数名和参数列表),如果函数名和参数列表不同,表示它们不是同一个函数。

  5. return语句返回值的数据类型必须与函数的声明一致。

  6. 在函数体中,return语句可以多次使用。

  7. 如果函数的重点是实现功能,不关心返回值,返回值的数据类型填void,return语句后面就空着。

  8. 函数可以没有任何参数。

  9. 函数名是标识符,必须满足标识符的命名规则。

在函数的声明和函数的定义中,参数命名可以不同,但是没必要这么写。

问题七:visual c++中函数如何调用?

语法:函数名(参数一,参数二,……)

注意:

  1. 声明函数的代码必须放在调用之前,定义函数的代码可以放在调用之后。

  2. 调用函数的时候,参数列表必须与函数的声明一致(参数的个数、顺序和数据类型)。

  3. 不管在什么地方都不能调用main函数,但是,在普通函数中,可以调用其它的普通函数。

  4. 调用函数的代码可以独占一条语句,也可以用于表达式(赋值运算、算术运算、关系运算、函数的参数)。

  5. 如果函数用于表达式中,返回值的数据类型要匹配(否则可能会被隐式转换或编译错误)。

问题八:如何visual c++中理解变量的作用域?

用域是程序中变量存在或生效的区域,超过该区域变量就不能被访问。

变量分全局变量和局部变量两种,全局变量在整个程序中都可以访问,局部变量只能在函数或语句块的内部才能访问。

Visual C++中定义变量的场景主要有五种:

1)在全部函数外面定义的是全局变量。

2)在头文件中定义的是全局变量。

3)在函数和语句块内部定义的是局部变量。

4)函数的参数是该函数的局部变量。

5)函数内部用static修饰的是静态局部变量。

1)全局变量

在整个程序生命周期内都是有效的,在定义位置之后的任意函数中都能访问。

全局变量在主程序退出时由系统收回内存空间。

2)局部变量

函数或语句块内部的语句使用在函数或语句块外部是不可用的

局部变量在函数返回或语句块结束时由系统收回内存空间。

3)静态局部变量

static修饰的部变量生命周期和程序相同,并且会被初始化一次

其作用域为局部,当定义它的函数或语句块结束时,其作用域随之结束。

当程序想要使用全局变量的时候应该先考虑使用static考虑到数据安全性

4)注意事项

全局变量和静态局部变量自动初始化为0。局部变量不会自动初始化,其值是不确定的,程序中应该有初始化局部变量的代码,否则编译可能会报错(不同的编译器不一样)。局部变量和全局变量的名称可以相同,在函数或语句块,如果局部变量名与全局变量名相同,就屏蔽全局变量而使用局部变量,如果想使用全局变量,可以在变量名前加::for循环初始化语句中定义的变量的作用域是for语句块。

问题九:visual c++中函数如果需要返回不止一个值,怎么做?

调用函数的时候,调用者把数值赋给了函数的参数。

实参:调用者程序中书写的在函数名括号中的参数,可以是常量、变量和表达式。

形参:函数的参数列表。

在函数定义的代码中,修改形参的值,会不会影响实参。

visual c++中函数如果需要返回不止一个值的时候,请使用传地址的方法来改变程序中的变更。

问题十:visual c++中如何处理多文件的项目?

写一个项目程序应该把不同的程序写在不同的文件。

头文件(*.h

需要包含的头文件,声明全局变量,函数的声明,数据结构和类的声明等。

源文件(*.cpp

函数的定义、类的定义。

主程序:main函数,程序的核心流程,需要用#include "头文件名"把头文件包含进来。

编译:

Windows是集成开发环境,不需要写编译指令。

在Linux系统下,把全部的源文件一起编译,如:g++ -o demo demo.cpp tools.cpp others.cpp

可以看下面的例子

把一个程序拆成五个文件:

文件1:demo.cpp

代码:

#include "tools.h"

#include "person.h"

int main()

{

cout<<"max(5,10)="<<max(5,10)<<endl;

cout<<"mix(5,10)="<<mix(5,10)<<endl;

print(1,"努力学习。");

}

文件2:

person.cpp

代码:

#include "person.h"

viod print(int no,string str)

{

cout<<"学习成绩排名第"<<no<<"的同学请继续"<<str<<endl;

}

文件3:tools.cpp

代码:

#include "tools.h"

int max(int a,int b)

{

return a>b?a:b;

}

int min(int a,int b)

{

return a<b?a:b;

}

文件4:person.h

代码:

#pragma once

#include<iostream>

using namespace std;

void print(int no,string str);

文件5:tools.h

代码:

#pragma once

#include<iostream>

using namespace std;

int max(int a,int b);

int mix(int a,int b);

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

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

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

相关文章

SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 宾馆客房管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统…

全网火爆,Python接口自动化测试 logging日志模块,看这篇就够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、logging模块介…

c4d和blender哪个简单?哪个好用?

新手初学3D制作&#xff0c;选C4D还是Blender&#xff1f;c4d和blender哪个简单&#xff1f;c4d和blender哪个好用&#xff1f;c4d和blender的区别&#xff1f;今天一篇文章带你搞定这2个软件的区别。 刚涉及到动画和3D建模领域的小白们&#xff0c;在面对近几年业内爆火的C4D…

更加轻松处理相同文件名!覆盖复制操作全新升级,避免重复命名!

亲爱的用户&#xff0c;您是否在进行覆盖复制操作时&#xff0c;常常因为相同的文件名而无法正常完成任务&#xff1f;现在&#xff0c;我们为您推出了全新的覆盖复制升级版&#xff0c;让您更加轻松处理相同文件名&#xff0c;避免重复命名的尴尬局面&#xff01; 首先第一步…

【Python3】【力扣题】190. 颠倒二进制位

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;将整数转为二进制字符串&#xff0c;截取、反转、补足32位&#xff0c;再转回整数。 知识点&#xff1a;bin(...)&#xff1a;转为二进制字符串&#xff0c;即‘0bxx...’。 str [2:]&am…

awk学习笔记1-常用awk操作

(一)awk简介 linux 三剑客之awk,AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。grep,sed和awk都是读一行处理一行&#xff0c;直到处理完成。 grep &#xff1a; 过滤文本 sed : 修改文本 awk : 处理文本(主要用来格式化,将文本按照指定的格式输出) …

大模型 | NEFTune之引入随机噪声对大模型训练的收益

大模型 | NEFTune之引入随机噪声对大模型训练的收益 paper中提到&#xff0c;在模型foward过程中&#xff0c;对inputs_embedding增加适度的随机噪声&#xff0c;会带来显著的收益。 Paper: https://arxiv.org/pdf/2310.05914.pdf Github: https://github.com/neelsjain/NEFT…

苹果官宣新品发布会 10月31日发布会与Mac有关

10 月 25 日消息&#xff0c;苹果宣布将于北京时间 10 月 31 日上午 8 点举行主题为“来势迅猛”的线上特别活动&#xff0c;届时或将有新品发布。 这场发布会与以往不同&#xff0c;将在北京时间 10 月 31 日上午 8 点举行。有很多猜测认为苹果届时会发布新款 Mac 电脑&#x…

dropbear-ssh2

编译&#xff1a; ./configure --prefix/home/lxin/workdir/install-dropbear --with-zlib/home/lxin/workdir/zlib/install-zlib-1.2.11/ CCx86_64-linux-gnu-gcc make clean make make install 生产秘钥 in bin dir: ./dropbearkey -t rsa -f ../sbin/dropbear_rsa_host…

赢得国际市场:小企业的跨境电商品牌策略指南

随着全球化的快速发展&#xff0c;跨境电子商务已经成为小企业突破国界、实现全球化梦想的有效途径。然而&#xff0c;成功的跨境电商经营并不仅仅依赖于产品质量和价格竞争力&#xff0c;品牌营销同样至关重要。本文将深入探讨小企业如何在跨境电商领域做好品牌营销。 一、了解…

感受webWorker

B站视频 git完整代码 之前遇到的场景 1、vxe表格计算1000多条数极值/算数平方根的时候。 2、大文件上传时计算hashCode时候 一、不使用webWorker 目录结构 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&q…

使用Docker部署Apache Superset并实现公网远程访问

大数据可视化BI分析工具Apache Superset实现公网远程访问 文章目录 大数据可视化BI分析工具Apache Superset实现公网远程访问前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网…

上帝视角看支付总架构解析

文章目录 1. 支付全局分层2. 交易服务层2.1 服务平台的支付架构2.2 架构的支付部分2.3 架构的清结算部分2.4 完整的架构 3. 支付服务层3.1 支付接收部分3.2 支付处理部分3.3 清结算部分 4. 清算服务层4.1 常见清算组织4.2 银联清算业务4.3 网联清算业务4.3.1 网联支持的业务4.3…

【Linux】 rpm安装包保存到本地并批量安装

目录 一、开启rpm安装包缓存到本地仓库 1. 修改yum.conf文件 2. 清理yum缓存 3. yum命令安装软件包 二、如何将rpm安装包保存到指定目录 方法一&#xff1a;yumdownloader 1. 安装yum-utils  2. yumdownloader命令参数说明 3. yumdownloader安装示例 方法二&#xff…

用Notepad++写java代码

步骤 1.新建&#xff0c;写代码 2.写好之后存为java文件 3.打开命令行 cd 对应位置 javac xxx.java &#xff08;如有中文&#xff09; java xxxdebug 1.错误: 编码utf-8的不可映射字符 这是代码里有中文&#xff0c;编译时加上-encoding utf-8即可 2.错误: 程序包xxx不存在…

ETO制造商目前面临的六大挑战,如何应对?

与离散制造、库存制造不同&#xff0c;按订单设计制造&#xff08;ETO&#xff09;行业面临着一系列独特的挑战。从复杂的产品设计到与客户的密切联系&#xff0c;按订单生产的每件产品都不尽相同。 如果采用按订单生产方式制造产品&#xff0c;管理者总是会想方设法采购最好的…

基于springboot实现书籍学习平台管理系统项目【项目源码+论文说明】

基于springboot实现书籍学习平台管理系统演示 摘要 首先,论文一开始便是清楚的论述了平台的研究内容。其次,剖析平台需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确平台的需求。然后在明白了平台的需求基础上需要进一步地设计平台,主要…

礼品家居建材行业出口管理ERP解决方案

根据“一带一路”白皮书显示&#xff0c;2013至2022年&#xff0c;中国与共建国家进出口总额累计19.1万亿美元&#xff0c;年均增长6.4%&#xff1b;与共建国家双向投资累计超过3800亿美元。随着“一带一路”高质量共建&#xff0c;第134届广交会第二期打造的“大家居”主体概念…

Python教程:csv如何保存字典数据

下面是一个示例代码&#xff0c;它将字典数据保存到CSV文件中&#xff1a; #我的Python教程 #微信公众号&#xff1a;wdPython首先创建了一个包含字典数据的列表dict_data。然后&#xff0c;我们使用csv.DictWriter()函数创建一个CSV写入对象&#xff0c;指定了字典中的键作为…