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

初学者在学习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深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

猜你喜欢

转载自blog.csdn.net/wang2015cn/article/details/134055569