C++入门——你的第一个Windows控制台应用程序

Posted on 2025-06-21 19:33  山地奥斯卡537  阅读(78)  评论(0)    收藏  举报

首先声明:我使用的是Dev-C++ IDE 5.11。这款软件属于IDE(集成开发环境),即自动配置了编辑器、编译器等,不需要输入传统的命令即可进行编译等操作。个人认为它比Visual Studio要简洁易用得多,不过只能编写C/C++的程序。

头文件

在C++程序中,头文件是基础组成部分。头文件声明了我们要使用的各种函数。

系统头文件使用尖括号<>,本地头文件使用双引号""。可以通过以下方式导入:

#include <iostream>	//已在环境变量中配置好,可以直接使用
#include "test.h"	//需要头文件的具体路径,支持绝对路径和相对路径

其中iostream是标准输入输出库,提供cincout功能。除此之外,还有许多库。

C语言头文件

  • 后缀为.h(如windows.h)
  • 可被C/C++使用

内容仅包含函数、常量声明等。如:

//test.h
#ifndef _TEST_H_	//避免重复包含
#define _TEST_H_
#endif

#include <string>
#define APP_NAME "YourAppName"	//定义软件名称
void functionName();	//声明函数(不包含定义)

C++头文件

  • 无后缀(如iostream)或.hpp后缀
  • 仅C++可用

内容即包含函数声明又包含函数定义,还支持更多C++特性,例如模板、命名空间等。如:

// Example.hpp  
#pragma once  //避免重复包含(也可以使用#ifndef)

#include <string>  

class Example {  
	public:  
    	void print(const std::string& message);  
	private:  
    	int count;  
};  

// 内联函数实现  
inline void Example::print(const std::string& message) {  
    std::cout << message << std::endl;  
}

命名空间

接下来是这段代码:

using namespace std;

这段代码声明要使用std这一命名空间,可写可不写,我用输出代码来举例:
写了:cout<<a;
不写:std::cout<<a;

命名空间的作用就是避免函数标识符冲突,如输出用的cout实际就被包含在std 这个命名空间里,保证不会与其它同名函数冲突。

在面对大项目时,函数重名是常有的事,此时就建议不写using namespace,而是直接显式指定命名空间,如完整地写std::cout。不过在写小项目时,为了偷懒(方便)我们也可以写上这一大行的命名空间使用声明。

命名空间的创建往往在C++头文件中,这么写:

namespace YourNameSpaceName {	//声明并定义命名空间
   int yourVariable;	//变量
    void yourFunction() {	//函数
    	// 代码实现
    }
}

主函数

主函数是程序入口,格式为:

int main(int argc, char* argv[]) {
	//这部分就是代码区域
	
	return 0;
}

所有C++程序都需要有主函数,即int main()

可以看到主函数的括号当中还有int argcchar* argv[],这是程序启动时的参数,也可以空着。第一个int类型的变量是一个整数,表示程序启动时的参数数量。第二个char类型的指代一个字符数组,即各个参数内容。

命令行示例:

程序文件名 参数一 参数二

此时argc=3,因为有3个参数,其中第一个参数argv[0]是你的程序文件名,argv[1]是参数一,参数二同理。

很多命令行程序通过启动参数,来完成任务,极大地方便了命令行用户的操作,例如:

cp test.txt ./test/target.txt

cp是类Unix系统里的复制程序,命令功能是将test.txt复制到./test/target.txt的位置。我们在开发时可以通过用户提供的参数让程序进行对应操作。

如果你要写Win32程序,那么恭喜你,你的主函数长这样:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);

个人评价是巨硬挺抽象的(

return 0;表示程序正常退出。控制台程序通常要明确终止点。


这就是刚刚所编的所有代码。

image

这就是运行结果,是空的。下方的“---”、“Process exited……”和“请按任意键继续”不用管它,这是集成开发环境加上的,实际单独运行就不会显示。

image

输入输出

在C++中,可以使用cincout实现基本的输入输出功能。cin用于接收用户输入,cout用于输出结果。同时,C风格的scanfprintf也可用于类似功能。

数据类型的选择

C++提供了多种数据类型用于存储不同类型的数据。常见的数据类型包括:

  • int:存储整数
  • char:存储单个字符
  • string:存储字符串
  • float:存储单精度浮点数
  • double:存储双精度浮点数

选择合适的数据类型是程序设计的关键步骤。若数据类型与输入内容不匹配,可能导致意外结果。例如,若程序预期输入整数但用户输入字符,输出的可能是字符的ASCII值而非预期数值。

示例

#include <iostream>
using namespace std;
int main() {
	int a;	//声明变量
	cin>>a; //输入
	cout<<a; //输出
	return 0;
}

该程序中,变量aint类型,仅能存储整数。若用户输入浮点数如1.1,程序仅会存储整数部分1

image

当然,在声明时也可以赋值:int a=0;这样它的初始值就是0。这时候我们删去输入的部分,就会输出0。
int类型还有一个特点,它是32位的,其中内存中的第一位是正负位(0表示正数,1表示负数),所以它的数据范围是2的正负31次方(-2147483648 ~ 2147483647)的整数,所以在任何时候都不要超出或小于这个范围,超出或小于,编程术语为“溢出”,可能引发程序错误,在早期不够成熟的应用程序中都容易发生这种情况。

溢出的int类型变量

下面是专门接收字符的:

#include <iostream>
using namespace std;
int main() {
	char n[10001]={};
	cin>>n;
	cout<<n[0]<<" "<<n[1];
	return 0;
}

字符数组声明时需指定大小,通常为最大字符数加1。初始化时建议使用= {}以清空该内存区域。输出字符数组时需通过下标访问,下标从0开始。例如n[0]表示第一个字符,n[1]表示第二个字符。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3