4-c++教程起航篇-学习笔记
c++教程起航篇
我们会讲C++那些事,C++与C语言的关系。
C++诞生于贝尔实验室。
C++之父: 本贾尼·斯特劳斯特卢普
C++社区排行榜
最新排行,c++排名第三,Python排名第四
C++语言的应用领域:
嵌入式(手机,机顶盒),游戏编程,网络编程,系统编程
快,省
C与C++的关系:
C语言是C++的子集。
C++在语法上完全兼容C,C++是从C的基础上发展而来的。
- c语言是面向过程的语言,而C++是面向过程的语言又是面向对象的语言。
- C语言的运行效率比c++更好。
学习C++,基础是学习C语言
C++ IDE环境搭建
我的IDE 与 IDE初体验
什么是IDE环境?
IDE: Integrated Development Environment
集成开发环境
一般包括代码编辑器,编译器,调试器和图形用户界面工具。
iso文件,虚拟光驱,找到setup.exe.
Visual Studio 2015 + Visual Assist X
链接: https://pan.baidu.com/s/1SgdThGYaLDyXDFKvaBSa5A 密码: 2333
安装后会提示更新,就更了吧。
因为我们学习c++,可以只安装C++部分。
- 如何新建项目
新建项目 -> 选择Visual C++ -> win32控制台应用程序
选择空文件,理解程序从无到有。
- 如何新建文件
源文件上点击右键添加新建项。
新建时选择cpp文件。
- 如何设置字体字号(工具->选项->字体和颜色)
C++之初体验
那么就让我们驶出远征中的第一步->Hello C++
#include<iostream>
using namespace std; //关于这里,且听下回分解
int main()
{
cout<<"Hello C++"; //在此填写我们的开篇Hello C++
return 0;
}
C++的新特性
C++基本知识
新的数据类型,新的初始化方法,随用随定义的特性
C语言中的数据类型
- c++新增bool数据类型,数值为true与false
优:快捷方便,还有视觉上清晰易懂,程序易读易懂
- c++除了拥有语言自带的初始化方式外,新增了一种定义方式(直接初始化)
C语言提供的初始化方法: int x =1024
除了与c语言一样的复制初始化,还有自己独有的直接初始化 优点:很快捷方便
- c++可随用随定义,而c的对变量的定义必须放置在函数体最前面
c语言方式下,程序长了还得调到上面定义变量很不方便。
总结: 新的数据类型(布尔类型),新的初始化方法(用括号括起来直接初始化),随用随定义的特性。
C++的输入输出方式
c语言中的I/O 方式
C++中的I/O 方式
cout 语法形式:
cout << x << endl;
两个小于号(中间没有空格),输入变量x(不需要区分类型,不需要%d等)。
endl
和c语言中的\n
是等效的。
cout << "x+y=" << x+y << endl;
错误示例如下:
cout << x,y,z << endl;
cin 语法形式:
cin >> x;
将外界的输入传递到x。不需要关注变量x的类型,不需要c语言的格式符。
cin >> x >> y;
cin输入方式, x y为变量. 依次为多个变量赋值。
这样的输入输出方式有哪些便利?
- 不用关注占位符。
- 不用关注数据类型。
不容易出现问题
C++新特性及输入输出演示小demo
- 八进制:oct;
- 十进制:dec;
- 十六进制:hexl
- bool类型输出:
boolalpha
;
c++中默认的i/o类型为十进制;如果不加说明,是无法辨认0
,0x
开头的八进制和十六进制的。在cin或cout中指明进制类型后,该进制将一直有效,直到再次改变它的进制。
4-C++-hexConvert/main.cpp
#include<iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout << "请输入一个整数:" << endl;
int x = 0; // 随用随定义
cin >> x;
cout << "八进制:" << oct << x << endl; // 八进制
cout << "十进制:" << dec << x << endl; // 十进制
cout << "十六进制:" << hex << x << endl; // 十六进制
cout << "请输入一个布尔值(0或1):"<< endl;
bool y = false;
cin >> y;
cout << boolalpha << y << endl; // 布尔类型输出
system("pause");
return 0;
}
f5开始调试
c++命名空间(namespace)
什么是命名空间
简言之: 就是为程序划片取名字
namespace区别来自不同的对象的相同名字的函数,为程序划片取名字。
为什么要有命名空间?
A公司和B公司都有小王,那么不指明是哪个公司的小王就会产生不知道是哪个小王。
程序中的命名空间
C公司购买了A和B的程序库,想要使用A的变量x,B公司函数f1怎么办?
A和B就要使用命名空间
命名空间关键字:
namespace A
,namespace B
namespace A{
int x = 0;
void f1();
void f2();
}
namespace B{
int x = 2;
void f1();
void f3();
}
要调用命名空间内变量或函数写法(C公司要使用的话):
// 输出A中的变量x
cout << A::x << endl;
// 使用B中的f1
B::f1();
namespace演示代码
- 正常的
system("pause")
包含于stdlib.h
#include <stdlib.h>
int main()
{
system("pause");
return 0;
}
- 要引用相应的头文件,还要引用对应的命名空间才可以正常运行。
#include<iostream>
否则报错,cin cout 未声明的标识符
using namespace std;
没有的话依然报错, 未声明的标识符, 因为iostream 中的cin cout在命名空间当中。
#include "stdafx.h"
#include <stdlib.h>
#include<iostream> // cin cout 步骤1
using namespace std; // 步骤2
int main()
{
cout << "hello" << endl;
system("pause");
return 0;
}
模拟A,B公司写代码,C公司使用
主函数为main函数模拟c公司。
4-C++-CompanyABC/main.cpp
#include <stdlib.h>
#include<iostream>
namespace A
{
int x = 1;
void fun()
{
std::cout << "A Company function" << std::endl;
}
}
namespace B
{
int x = 2;
void fun()
{
std::cout << "B Company function" << std::endl;
}
void fun2()
{
std::cout << "Only B Have" << std::endl;
}
}
using namespace B;
int main()
{
std::cout << A::x << std::endl;
B::fun();
fun2(); // using name space B; + fun2(); 等价 B::fun2();
system("pause");
return 0;
}
不写using namespace std
时,想要用cin cout的话, 使用std::cin
std::cout
章节练习(命名空间)
定义一个命名空间为myNum,在该命名空间中定义一个整型变量x,并给该变量赋值为105;使用C++新特性判断myNum命名空间下的变量是奇数还是偶数。
4-9-C++-namespaceDemo/main.cpp
#include <iostream>
#include <stdlib.h>
using namespace std;
namespace myNum //填写命名空间的关键字
{
int x = 105;
}
int main()
{
// 使用bool类型定义isOdd,作为状态位
bool isOdd = false;
if (myNum::x % 2 == 0)
{
//改变状态位的值,使其为false
isOdd = false;
}
else
{
//改变状态位的值,使其为true
isOdd = true;
}
// 判断状态位的值
if (isOdd)
{
// 如果状态位的值为true,则打印变量x是奇数
cout << myNum::x << "是奇数"<<endl;
}
else
{
// 如果状态位的值为false,则打印变量x是偶数
cout << myNum::x << "是偶数"<<endl;
}
system("pause");
return 0;
}
5-1 综合练习
- 知识点:bool类型 命名空间 输入输出。
使用一个函数找出一个整型数组中的最大值最小值。
5-1-c++-boolNamespaceCinCout/main.cpp
一个函数, 传入整型数组,求最大最小值
/********************************************************/
/*知识点:bool类型 命名空间 输入输出 */
/*题目要求: */
/* 使用一个函数找出一个整型数组中的最大值最小值。 */
/*******************************************************/
#include <stdlib.h>
#include <iostream>
namespace CompA
{
int getMaxOrMin(int *arr, int count, bool isMax)
// 数组,数组元素个数,最大还是最小(True 最大,False最小)
{
int temp = arr[0];
// 先拿到整个数组中的第一个元素,一旦发现比它大的,就把刚发现的赋值给它
for (int i = 1; i < count; i++)
// 经典写法int i=0; i < count; 既然我们已经把第0个取了,我们可以从第一个开始比
{
if (isMax)
{
if (temp < arr[i]) {
temp = arr[i];
}
}
else
{
if (temp > arr[i]) {
temp = arr[i];
}
}
}
return temp;
}
}
int main(void)
{
int arr1[4] = { 3,5,1,7 };
bool isMax = false; // 与形参区别开
std::cout << "您想要求数组{3,5,1,7}最大值还是最小值?(0最小,1最大)" << endl;
std::cin >> isMax;
std::cout << CompA::getMaxOrMin(arr1, 4, isMax) << std::endl;
system("pause"); // stdlib.h
return 0;
}
4-c++教程起航篇-学习笔记的更多相关文章
- 鸟哥Linux私房菜基础学习篇学习笔记3
鸟哥Linux私房菜基础学习篇学习笔记3 第十二章 正则表达式与文件格式化处理: 正则表达式(Regular Expression) 是通过一些特殊字符的排列,用以查找.删除.替换一行或多行文字字符: ...
- 鸟哥Linux私房菜基础学习篇学习笔记2
鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...
- 鸟哥Linux私房菜基础学习篇学习笔记1
鸟哥Linux私房菜基础学习篇学习笔记1 第三章 主导分区(MBR),当系统在开机的时候会主动去读取这个区块的内容,必须对硬盘进行分区,这样硬盘才能被有效地使用. 所谓的分区只是针对64Bytes的分 ...
- Java反射篇学习笔记
今天重新学习了java中的反射,写一篇学习笔记总结一下.代码基本都是照着两篇博客敲的: 参考一: https://blog.csdn.net/sinat_38259539/article/deta ...
- DDD领域驱动设计理论篇 - 学习笔记
一.Why DDD? 在加入X公司后,开始了ASP.NET Core+Docker+Linux的技术实践,也开始了微服务架构的实践.在微服务的学习中,有一本微软官方出品的<.NET微服务:容器化 ...
- C++远征离港篇-学习笔记
C++远征离港篇 离港总动员 C++远征计划的学习者肯定是冲着封装,继承,多态来的. 知识点: 指针 VS 引用 #define VS const(更强数据控制力) 函数默认值 & 函数重载 ...
- 9-C++远征之多态篇-学习笔记
C++远征之多态篇 面向对象三大特征:封装,继承,多态 多态: 发出一条命令时,不同的对象接收到同样的命令做出的动作不同 多态篇会学习到的目录: 普通虚函数 & 虚析构函数 纯虚函数:抽象类 ...
- 8-C++远征之继承篇-学习笔记
C++远征之继承篇 开篇介绍 整个C++远征计划: 起航->离港->封装->继承 为什么要用继承? 为什么要有继承? 如何来定义基类 <----> 派生类? 基类到派生类 ...
- HTML标记语言篇--学习笔记01
HTML标记语言篇 第1章 HTML基础 1.1 基本概念 WWW 是"World Wide Web"(全球广域网)的缩写,简称为Web,中文又称为"万维网" ...
随机推荐
- C++实现线性表的链接存储结构(单链表)
将线性表的抽象数据类型定义在链接存储结构下用C++的类实现,由于线性表的数据元素类型不确定,所以采用模板机制. 头文件linklist.h #pragma once #include <iost ...
- css3 box-shadow属性 鼠标移动添加阴影效果
text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果. 基本语法:{box-shadow:[inset] x-offset y-offset blur-rad ...
- AngularJs学习笔记--Understanding Angular Templates
原版地址:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model angular template是一个声明规范,与mode ...
- Android进阶笔记15:选用合适的IPC方式
1. 相信大家都知道Android进程间通信方式很多,比如AIDL.Messenger等等,接下来我就总结一下这些IPC方式优缺点. 2. IPC方式的优缺点和适用场景 3. 附加:使用Intent实 ...
- 解析纯真IP地址库
一周以来,一直在做 IP地址库的解析.从调研到编码到优化,大概花了有七八天的时间.感觉很好玩.总结一下整个做的过程. 1.关于IP 地址库的解析方式 目前主要的解析方式有两种:通过API,或通过IP数 ...
- UIView的多重属性
1)几何属性: 2)位图属性:
- 【[HNOI2006]超级英雄】
看到楼下有大佬说了网络流做法,来给大佬配个代码 我们只有我可能都觉得如果不动态加边的话\(dinic\)可能跑不了这种需要中途退出的二分图匹配 正当我准备去敲匈牙利的时候突然想到这个题可以二分啊 于是 ...
- PHP-------- JQUERY方式
JQUERY方式 1.根据ID取元素,Jquery对象 var div = $("#one"); 2.根据class取 var div = $(".test&quo ...
- shiro权限配置的细节问题&认证
细节: ---[urls]部分配置,其格式是 url=拦截器[参数] ,拦截器[参数] ---如果当前请求的 url 匹配 [urls] 部分或者某个url模式,将会执行配置的拦截器 ---an ...
- 在Windows 7和10上显示上次登录帐户信息
组策略: 计算机配置->管理模板->Windows组件->Windows登录选项 现在注销并重新登录以查看会发生什么. 在进入桌面之前,用户必须确认该消息 注册表: 打开: &quo ...