C/C++基础

C++开发环境

纯语言开发要求:C++IDE。

极简C/C++ 语法规则

仅记原始规则,把握编程的本质,不做孔乙己,要做说干就干的平头哥。

原始的规则:

  1. 各"语法单位"(组成部分)使用任意个(至少1个)分隔符隔开。分隔符有:空格,或tab键,或换行符。
  2. 必须使用英文输入法输入(仅双引号括起来的"字符串"中可使用中文)
  3. 每条代码的后面使用 ;表示这个指令代码结束。
  4. #include等预处理指令,必须一条指令占一行

其他规则不需记忆,在后面的项目实践中掌握。不要刻意记忆C++的语法规则(记也没有意义)。初学时,仅掌握最基本的语法规则即可!

代码风格

代码风格很差的代码:常见于报价低但是由要求给源码的外包软件中。(目的:让人看不懂)

良好的编程习惯:变量在定义时,进行初始化:int age = 0;

程序员的第一印象,不是外表,而是自己的代码风格:命名风格、缩进风格、注释风格

静态库:只想把接口留给别人,不想给出源代码

头文件的使用

程序如戏,程序中有很多元素(std::cout, system), 都是一个个演员。但是他们之间都互不认识, 但是却要一起合作, 强行编译, 就会导致错误!得预先介绍他们, 知道他们各自的名号和用法。

解决方案:包含相应的头文件! (头文件中, 含有相关元素的介绍说明)

std::cout 头文件: iostream

system 头文件: Windows.h

#include <Windows.h> 表示把文件Windows.h中的所有内容拷贝(复制)到"这里"。

头文件的查找路径

#include <Windows.h>,<>表示,从编译器默认的路径中去找文件stdio.h。这个默认路径,取决于编译器。不同平台下不同编译器的路径都不相同。这个默认路径下,已经包含了c标准库所需要的所有头文件。使用C++标准库的头文件使用该方式。

#include "mytest.h",""表示从当前目录下寻找文件mytest.h,如果在当前目录下找不到,再从编译器默认的路径中查找。使用用户自定义的头文件使用该方式。

头文件的位置

要求放在文件的最前面。#include 的作用是,把相关的声明拷贝到这个文件内,所以都习惯把#include 放到文件的最前面。

main函数

main函数是主程序的唯一入口。一个程序,必须要有一个main函数,而且也只能有一个main函数。

main函数的格式:

格式1:int main(void) { }

格式2:int main(int argc , char* argv) { }

其他函数

IT格言:不要重复制造轮子 ---《人月神话》。解读:尽可能使用已经开发好的函数。

其它函数:C标准库、C++标准库、第三方开源框架、公司内已经开发好的函数、程序员自己定义的函数

数据格式

字符串常量

字符串常量:内容永远不会发生变化的字符串,用半角(英文输入法)双引号""括起来。

std::cout << "我的战斗力是" << 10000; //"我的战斗力是"是字符串常量,10000是整数常量

常量和变量的区别:常量在程序整个运行期间,值不会发生任何变化。变量:在程序整个运行期间,值随时可以发生变化。

cout和printf的使用

C++风格的打印:

实例:std::cout << "你好!" << std::endl;

等效于:std::cout << "你好!";std::cout << std::endl;

std::cout, 可以连续输出任意多个数据,中间用 << 隔开。

使用要求:需要包含头文件 #include <iostream>,注意不是#include <iostream.h>

std是一个命名空间,cout是std命名空间内的一个"对象"。endl也是std命名空间内的一个对象,用来表示"回车符"(换到下一行的最前面)std::cout << 相当于调用了一个特殊的函数(但不是函数),用来打印数据。

C风格的打印:

实例:printf("你好!\n");

等效于:printf("你好!");printf("\n");

printf("工资:%d 年假:%d", 30000, 12); printf("圆周率:%f", 3.1415);

说明:占位符的使用、%d 整数、 %f 浮点数(带小数部分的数据)

使用要求:需要包含头文件 #include <stdio.h>

特别注意:std::cout和printf还有很多用法,现在只需要掌握以上最常用的用法,其他的用法现在不需要关注。

打印语句的使用场合:控制台应用程序的输出、程序调试Bug的重要手段

cin的使用

当缓冲区为空时,程序才会暂停,让用户输入数据。输入回车后,数据全部送到输入缓冲区。

cpp 复制代码
#include<iostream>
#include<Windows.h>
int main(void){
	float height;
	
	std::cout << "请输入您的身高:[单位-米]" << std::endl;
	std::cin >> height;

	std::cout << "您的身高是: " << height << "米" << std::endl;

	system("pause");
	return 0;
}

小结:对于char, int, float等基本数据类型, 直接使用std::cin >> 输入即可.

特别注意:输出使用 std::cout << 输入使用 std::cin >>

命名空间的使用

C++避免名字冲突:使用命名空间

cpp 复制代码
#include <iostream>
#include <string>

namespace China {
	float population = 14.1;  //单位: 亿
	std::string capital = "北京"; 
}

namespace Japan {
	float population = 1.27;  //单位: 亿
	std::string capital = "东京"; 
}

using namespace China;
using Japan::population;

int main(void) {
	std::cout << "首都:" << capital << std::endl;
	std::cout << "人口:" << population << std::endl; //出错!

	system("pause");
	return 0;
}

//错误提示:population": 不明确的符号
//错误原因:
using namespace China;   //China命名空间中有population
using Japan::popolation  //又单独声明了Japan中的population

//解决方案:指定完整的域名(Japan::population )来表示。
std::cout << "首都:" << capital << std::endl;
std::cout << "人口:" << Japan::population << std::endl; 

C++程序编译过程

使用注释的要点

注释的目的:为了让程序更方便阅读("可读"),以便于维护。

需要注释的内容:重要变量名的作用(用来表示什么)、比较复杂的算法思想、程序中的关键步骤

注释的方式:单行注释 // 在行尾,或代码的上一行;多行注释 /* */ 不支持嵌套。

图形开发环境

|-----------|------------------------------------------------------------------------|
| 图形开发环境 | 特点 |
| MFC或WPF | 使用方便, 但是需要先熟悉C++, 仅适用于Windows平台。 |
| QT | 跨平台, 也要先熟悉C++ |
| 图形库OpenGL | OpenGL非常强大, 很多大型游戏引擎就直接使用OpenGL绘制图像。 缺点: 太复杂, 不适合初学者 |
| EasyX | 开发简单的图形界面应用程序 适用于Visual C++或VS其他版本,使用简单, 适合C/C++初学者构建图形界面. 但在实际工作中用不上。 |

积木式编程训练

Scratch介绍:Scratch是一款由美国麻省理工学院(MIT) 设计开发的开源的图形化编程工具。直接用图形化、积木式的方法开发应用程序。

目的:忽略语言细节,专注编程的本质:编程思维;快速掌握编程技能。

应用:可直接开发各种游戏、应用。结合Arduino开发板(一种开源硬件),可开发各种极客项目、机器人项目。

适用于:初学编程的所有人群。

不适用于:已经具备丰富编程经验的程序员。

Scratch使用方式:网页方式(国外网站,受网速影响严重)https://scratch.mit.edu/

离线式:下载安装Scratch

代码对比工具

明明文档或代码是一样的,为什么还是出错?

使用场合:学习时,和参考代码做比较、开发时,在多个版本之间做比较。

beyond compare 代码对比工具

相关推荐
charlie11451419134 分钟前
IMX6ULL2025年最新部署方案2在Ubuntu24.04上编译通过Qt5.12.9且部署到IMX6ULL正点原子开发板上
linux·嵌入式硬件·qt·系统架构·嵌入式软件·移植教程
努力创造奇迹2 小时前
STM32 HAL库 实现485通信
stm32·单片机·嵌入式硬件
Tlog嵌入式2 小时前
STM32提高篇: 以太网通讯
网络·stm32·单片机·嵌入式硬件·mcu·iot
菜狗想要变强4 小时前
RVOS-7.实现抢占式多任务
linux·c语言·驱动开发·单片机·嵌入式硬件·risc-v
番茄老夫子4 小时前
适合stm32 前端adc使用的放大器芯片
stm32·单片机·嵌入式硬件
m0_疾风5 小时前
STM32
stm32·单片机·嵌入式硬件
LaoZhangGong1235 小时前
MCU屏和RGB屏
经验分享·stm32·单片机·嵌入式硬件·fsmc
格里姆肖6 小时前
LVGL源码(7):渲染
c语言·stm32·单片机
双叶8366 小时前
(51单片机)LCD显示日期时间时钟(DS1302时钟模块教学)(LCD1602教程)
c语言·开发语言·数据库·单片机·嵌入式硬件·mongodb·51单片机