Rock_C++入门(笔记)



前言

Rock老师;C++;笔记



一、命名空间

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


1.用法1:指定整个域名

#include <iostream>
#include <string>

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

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

using namespace Japan;

int main(void) {
	//使用默认命名空间
	std::cout << "首都:" << capital << std::endl;
	std::cout << "人口:" << population << std::endl;
	//使用指定命名空间
	std::cout << "首都:" << China::capital << std::endl;
	std::cout << "人口:" << China::population << std::endl;
	

	system("pause");
	return 0;
} 
/*
在VS2010运行结果:
首都:东京
人口:1.27
首都:北京
人口:14.1
*/

2.用法2:直接指定命名空间中的标识符

#include <iostream>
#include <string>

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

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

//注意:没有namespace
//直接指定命名空间中的标识符,而不是整个域名
using China::capital;
using Japan::population; 

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

	system("pause");
	return 0;
}
/*
在VS2010运行结果:
首都:北京
人口:1.27
*/


二、C++软件(exe)生成流程

源程序(hello.cpp)
--第一次处理(预处理)->(头文件内容拷贝到源代码等)源程序(a.cpp)
--第二次处理(编译) ->汇编程序(a.s)
--第三次处理(汇编) ->二进制程序(a.o)
--第四次处理(链接) ->(C++库文件链接)可执行文件(a.exe)

//与操作系统-内存管理 联系(编译-链接-装入)


三、注释

1.使用注释的要点

1注释的目的:

为了让程序更方便阅读(“可读”),以便于维护。
需要注释的内容:

  1. 重要变量名的作用(用来表示什么)
  2. 比较复杂的算法思想
  3. 程序中的关键步骤

2.注释的方式

有两种注释方式

  1. 单行注释 //
    在行尾,或代码的上一行(和代码一同空一行)
    在代码的下一行也可以,但很少有人这么做。
  2. 多行注释 /* */
    不支持嵌套。
  3. 不要为了注释而注释.
    过多的注释,反而有害。

2.注释的风格

  1. 在行尾注释 使用 //注释
  2. 在代码的上一行使用 //注释
  3. 多方内容的注释,使用 /* */
  4. 函数的注释


四、数据类型

int					unsigned int		
char				unsigned char		
long				long long 			unsinged long
short				unsigned short
float 				double					
各种指针类型			bool
string 				类
// C++完全支持C语言各种数据类型

1.不同数据类型的区别

  1. 表示意义不同
  2. *占用内存不同
  3. *表示的范围不同
  4. 使用方法不同


五、变量

变量是处理数据的基本实体;
程序运行时, 大量数据存储在变量中 计算/交换;

1.变量是什么

变量是内存中的一块存储空间, 即一小块内存

2.变量和数据类型的关系

变量是一个盒子, 盒子里保存了**数据**
数据分成很多**类型** // 数据类型
  1. 变量的类型,就是变量中数据的类型
  2. 变量在定义(创建)时, 必须指定它的类型
    // 相当于制作一个盒子, 要确认盒子装什么, 来制作不同大小的盒子
  3. 一个变量只有一个类型, 并且不能改为其他类型

3.变量的定义

Eg : int i;
1.变量名 : i
2.变量类型 : int
3.占用内存 : 4字节(Byte)  // 1Byte = 8bit (八个二进制位)

1.定义形式

  1. 定义时, 不初始化, 垃圾值
int i;
int j;
  1. 不推荐, 不方便注释
int i, j;
  1. 定义时, 赋初值, 好习惯
int i = 0;

2.最底层

内存的存储单位 : 字节(Byte)

int i = 100;
// 内存是竖着的连续格子,  一个格子1Byte, 可存储 8bit
/*
小端格式(大多数) : 小 -> 大
   内存     内存地址
空			//8005
空			//8004
0000 0000	//8003
0000 0000	//8002
0000 0000	//8001
0110 0100   //8000
*/

4.变量的命名规范

  1. 数字; 字母; 下划线
  2. 不能以数字开头
  3. 不能与关键字同名
1.最大长度 : 取决于编译器 32 以上 //超长会警告
2.顾名思义  // 最怕看代码
3.不要使用汉语拼音 ; 尤其是简写

命名风格 : 风格统一

(1) 下划线风格
	int student_age; // 一般用于变量名, 函数名
(2) 小驼峰风格	
	int studentAge; // 一般用于变量名, 函数名
(3) 大驼峰风格 	
	class StudentAge; // 一般用于“类名”
(4)全部大写 
   #define MAX_AGE 30 // 一般用于宏 ; 预处理直接替换
(5)匈牙利命名法
	臃肿
	

5.变量类型


1.整数类型_int


2.字符类型_char


3.浮点类型_float/double


4.布尔类型_bool

5.无符号类型_unsigned

1. unsigned 等价于 unsigned int // 2^32
2. 无符号数,不能表示负数
3. 如果强行用无符号数表示负数,实际存储的是这个负数对应的“补码” // 即:该负数 + “模值”

6.C++ 输入/输出

  1. 键盘 -回车> 输入缓冲区 -cin> 变量
    // 输入缓冲区, 有东西直接读, 没东西则等待

7.两种常量

1.字面常量 与 进制常量

 1. int  : 1, 2, ... // 默认
 2. long : 1L, 2L, ...
 3. long long : 1LL, 2LL, ...
 4. char    : 'a', 'b', ... //单引号
 5. float   : 1.0f
 6. double  : 1.0 //默认
 7. 十六进制 : 0x11 = 1*16 + 1*1 = 17 // 每一位有16种可能
 8. 八进制   : 011 = 1*8 +1*1 = 9 // linux表示系统权限时使用

2.字面常量缺点

 1. 程序可读性变差
 2. 代码可维护性变差

3.符号常量(推荐使用)

(1)#define 宏定义的符号常量
# define MAX_AGE 25 // 在编译的预处理阶段,直接把MAX_AGE替换为35

(2)const修饰的符号常量
const int max_age = 25;
max_age = 30; //错误!编译失败
/*
注 :const修饰的符号常量,又叫“只读变量”。
本质上,是一个变量,只是被const限制。
*/

8.数据类型转换



六、字符串

1.字符串长度

字符串中包含字符(字节)的个数, 汉字所占字节为 2或3

2.字符串常量

1. 用 " " 括起来
2. 输出 :
	printf("name = %s", "sugar");
	cout << "suagr";

3.字符串结束符

C语言 : '\0'
C++  : string类_长度

4.字符串变量

C语言 : char类型数组
C++  : std :: string 类型

5.字符串的定义和初始化

初始化 : 定义变量的同时, 设置一个值, 称为初始化
// string 的定义与初始化

# include <iostream>
# include <string>
# include <Windows.h>

using namespace std;

int main(void)
{
	string king1; // 空字符串
	cout << "king1 = " << king1 << endl; // 输出为空
	king1 = "sugar"; // 字符串常量拷贝到变量中
	cout << "king1 = " << king1 << endl;

	string king2;
	king2 = king1; //字符串变量拷贝到变量中
	cout << "king2 = " << king2 << endl;

	// 初始化 : 定义变量的同时设置一个值
	string king3("sugario"); // 定义了一个字符串变量king3, 同时把它的值设置为"sugario"
	cout << "king3 = " << king3 << endl;

	string king4(king3); // 用字符串变量完成初始化
	cout << "king4 = " << king4 << endl;

	string king5(5, 'S'); // 等效于 : sting king5("SSSSS");
	cout << "king5 = " << king5 << endl;

	system("pause");

	return 0;
}
/*
	king1 =
	king1 = sugar
	king2 = sugar
	king3 = sugario
	king4 = sugario
	king5 = SSSSS
*/

6.字符串的输入与输出

使用 std :: cin >> 输入
从第一个非空白字开始,直到遇到空白字符时停止输入 // 空白字符是指:空格,制表符,回车符

使用std::cout  <<  输出
# include <iostream>
# include <Windows.h>
# include <string>

using namespace std;

int main(void)
{
	string job;

	// 基本用法
	cout << "你的工作是?" << endl; // console output
	cin >> job ; // console input
	/*
		你的工作是?
		   cpp   c  // 遇到空白字符时停止输入
		做cpp, 感觉怎么样?
	*/
	cout << "做" << job << ", 感觉怎么样?" << endl;

	string profession1;
	string profession2;

	// 利用自动跳过空白字符
	cout << "你的两个专业是?" << endl; 
	cin >> profession1 >> profession2;
	/*
		你的两个专业是?
		  考古   土木   金融
		考古和土木专业不错哦
	*/
	cout << profession1 << "和" << profession2 << "专业不错哦" << endl;

	

	system("pause");

	return 0;
}
// 连续输入多个字符串, 且字符串个数不确定
// 直到输入结束时(ctrl + z 并 回车), 

# include <iostream>
# include <windows.h>
# include <string>

using namespace std;

int main(void)
{
	string food;
	int count = 0;

	cout << "你喜欢吃什么(输入 ctrl + z 退出) : " ;

	// 使用cin >> 输入时, 遇到文件结束符(ctrl + z), 就返回0
	while(cin >> food)
	{
		count += 1;

		cout << "你最喜欢的第" << count <<"个美食是 : " << food << endl;
		cout << "你还喜欢吃什么 : ";

	}

	cout << "你最喜欢吃的美食一共有" << count << "种" << endl;

	system("pause");

	return 0;
}

/*
	你喜欢吃什么?面板 肉包 牛肉 鸡胸肉
	你最喜欢的第1个美食是 : 面板
	你最喜欢的第2个美食是 : 肉包
	你最喜欢的第3个美食是 : 牛肉
	你最喜欢的第4个美食是 : 鸡胸肉
	^Z
	你最喜欢吃的美食一共有4种
*/

7.字符串的比较

比较规则:和C语言相同。
从字符串的第一个字符开始,对应字符逐个比较,直到遇到不相等的字符为止。
// c++ 可直接使用  >, <, == ...

8.字符串的加法_拼接



七、数组



八、运算符



1.逻辑运算


2.位运算



总结

23/05/02 - 未完结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值