C++入门编程学习笔记(一)

请添加图片描述


一、C++初识

C++是一种面向对象的程序设计语言,我用的是Dev-C++ 5.15,主要原因是界面简洁,对于初学者来说用起来很简单。(链接: SourceForge下载)

打开Dev之后,配置了一下界面,预设了打开文件插入的代码片段,(作为一个女生,就想美美的),开始!

图1
编写一个C++程序总共分为4个步骤:


  • 创建项目

❀操作步骤:文件 —— 新建… —— 项目 —— 基本 —— 控制台应用程序 —— C++项目 —— 名称(自己写) —— 确定 .

❀此时的界面:左侧出现了“项目 1” ,下面包含一个“main.cpp”的文件,也就是源文件,可以通过右键单击“项目 1”往项目中添加头文件等。


  • 创建文件

❀操作步骤:文件 ——新建源代码 .

❀此时的界面:创建了一个名为“新文件1”的文件,可以直接写代码。刚开始学C++还用不到项目的方式,所以可以直接创建源代码文件,编译运行保存为.cpp文件即可。


  • 编写代码

❀操作步骤:在写C++程序时,有一个框架,在 *|*处写代码:

#include <iostream>
using namespace std;

int main() {
	*|* 

	system("pause");
	
	return 0;
} 

  • 运行程序

❀操作步骤:按F9编译,按F10运行,按F11编译运行 .


1.1 输入输出:cin 和 cout

  • 输出格式 cout<<…<<endl;

代码:

/*********************************************************************
    程序名: 书写 Hello world
    作者: Sweitena
    日期: 2021-01-10 10:00
    说明: 输出格式 cout <<...<< endl;
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	//输出的格式
	cout << "Hello world!" << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述

  • 如果想显示多行文本,不用一直写cout实现多行输出,将输出改成如下格式就可以啦,代码片段
cout     << "...............\n"
	     << "Hello world!\n"
	     << "Welcome to c++\n"
	     << "...............\n";

运行结果图:
在这里插入图片描述

  • 输入格式 cin>>…;

代码:

/*********************************************************************
    程序名:数据的输入
    作者: Sweitena
    日期: 2021-01-13 15:33
    说明: 输入格式 cin << ...;
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	
    //整型变量输入 cin >>...;
	int a;
	cout << "请给变量a赋值:" << endl;
	cin >> a;
	cout << "a=" << a << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


1.2 注释: // 和 /**/

  • 单行注释
  • 多行注释

代码片段:

//1.单行注释:通常放在一行代码的上方或者一条语句的末尾,对该行代码说明
  
/*  
  2.多行注释
通常放在一段代码上方,对该段代码做整体说明  */

1.3 常量:#define 和 const

在 C++ 中,有两种简单的定义常量的方式:

  • 使用 # define 预处理器。define和C语言中用法相同,可以定义一个宏常量。
  • 使用 const 关键字。可以使用 const 前缀声明指定类型的常量。

两者区别:

  • 类型和安全检查不同
    -①宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查;
    -②const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查;
  • 编译器处理不同
    -①宏定义是一个"编译时"概念,在预处理阶段展开,不能对宏定义进行调试;
    -②const常量是一个"运行时"概念,在程序运行使用,类似于一个只读数据;
  • 存储方式不同
    -①宏定义是直接替换,不会分配内存,存储与程序的代码段中;
    -②const常量需要进行内存分配,存储与程序的数据段中;
  • 定义域不同
    -①宏定义在所有函数外部声明,则是全局的,不受定义域限制;
    -②const常量在在函数或一个代码块内部声明,则是局部的。
  • 定义后能否取消
    -①宏定义可以通过#undef N 12来使之前的宏定义#define N 21失效
    -②const常量定义后将在定义域内永久有效
  • 是否可以做函数参数
    -①宏定义不能作为参数传递给函数
    -②const常量可以在函数的参数列表中出现

const关键字应用:

  • 欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了;
  • 对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
  • 在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值;
  • 对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量;
  • 对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。

代码:

/*********************************************************************
    程序名: 常量的简单使用
    作者: Sweitena
    日期: 2021-01-10 10:05
    说明: #define定义 \ const修饰
*********************************************************************/
#include <iostream>
using namespace std;

#define Day 7  //#define 宏常量

int main() {

	cout << "一周一共有:" << Day << "天" << endl;
	//const修饰的变量也成为常量
	const int month = 12;
	cout << "一年一共有:" << month << "月" << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


1.4 常用关键字

  • C++ 的关键字(保留字)完整介绍,链接: 菜鸟教程.
  • size of 关键字的使用:
/*********************************************************************
    程序名:sizeof关键字
    作者: Sweitena
    日期: 2021-01-10 10:19
    说明: 【作用】利用sizeof关键字可以统计数据所占内存大小
*********************************************************************/
#include <iostream>
using namespace std;

int main() {

	int num;
	num = sizeof(int);
	cout << "int占用内存空间为:" << num << endl;

	int Array[5] = {1, 2, 3, 4, 5};
	int len = sizeof(Array) / sizeof(Array[0]);
	cout << "数组元素的个数为:" << len << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


1.5 转义字符

  • 常用的转义字符:① \n ② \\ ③ \t

代码:

/*********************************************************************
    程序名:转义字符
    作者: Sweitena
    日期: 2021-01-10 20:40
    说明:【作用】用于表示一些不能显示的ASCII字符
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	/******常用的转义字符*******/

	//①换行符\n或者endl
	cout << "hello world\n";
	cout << "HELLO WORLD" << endl;

	//②反斜杠\\
	cout << "\\" << endl;

	//③水平制表符\t  整齐的输出数据
	cout << "\thello world" << endl;     //\t占了8个空间
	cout << "aaaa\thello world" << endl; //前面总共8个空

	system("pause");

	return 0;
}

运行结果图:

在这里插入图片描述


1.6 三字符组

  • 作用:三字符组就是用于表示另一个字符的三个字符序列。
  • 三字符组总是以两个问号开头。
  • 三字符组可以出现在任何地方,包括字符串、字符序列、注释和预处理指令。

下面列出了最常用的三字符序列:

三字符组替换
??==
??/\
??’^
??([
??)]
??!|
??<{
??>}
??-~

二、数据类型

  • C++规定在创建一个变量或常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。

2.0 声明:typedef

  • 作用:可以使用 typedef 为一个已有的类型取一个新的名字。

代码片段:

typedef int feet; //作用:告诉编译器,feet是int的另一个名称

feet x = 10;      //这条语句是合法的,它创建了一个整型变量x并赋值为10

下面引用了知乎上的内容.

  1. 整形:
typedef int x; // 定义了一个名为x的int类型
  1. 结构体:
typedef struct { char c; } s; // 定义了一个名为s的struct类型
  1. 指针:
typedef int *p; //定义了一个名为p的指针类型, 它指向int
  1. 数组:
typedef int A[];  // 定义了一个名为A的ints数组的类型
  1. 函数:
typedef int f();     // 定义一个名为f, 参数为空, 返回值为int的函数类型
typedef int g(int);  // 定义一个名为g, 含一个int参数, 返回值为int行的函数类型

2.1 整型:4种

  • 作用:整型变量表示的是整数类型的数据

在这里插入图片描述

代码:

/*********************************************************************
    程序名:整型
    作者: Sweitena
    日期: 2021-01-13 20:39
    说明:【作用】整型变量表示的是整数类型的数据
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	//C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同
	cout << "①整型:" << endl;
	//短整型 short  最大是-2^15~2^25-1
	short numZ_1 = 32768;
	//整型 int      最大是-2^31~2^31-1
	int numZ_2 = 32768;
	//长整型 long   最大是-2^31~2^31-1
	long numZ_3 = 2147483648;
	//长长整型 long long  最大是-2^63~2^63-1
	long long numZ_4 = 2147483648;
	cout << "numZ_1 = " << numZ_1 << endl;
	cout << "numZ_2 = " << numZ_2 << endl;
	cout << "numZ_3 = " << numZ_3 << endl;
	cout << "numZ_4 = " << numZ_4 << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


2.2 实型:float 和 double

  • 作用:实型变量表示的是小数
  • 浮点型变量分为两种:单精度 float // 双精度 double

在这里插入图片描述

  1. float 单精度浮点值。单精度的格式:1位符号,8位指数,23位小数。

在这里插入图片描述

  1. double 双精度浮点值。双精度的格式:1位符号,11位指数,52位小数。
    在这里插入图片描述

代码:

/*********************************************************************
    程序名:实型
    作者: Sweitena
    日期: 2021-01-13 20:50
    说明:【作用】实型变量表示的是小数
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	cout << "②实型(浮点型)" << endl;
	//单精度
	float f1 = 3.1415926f;
	//双精度
	double d1 = 3.1415926;
    cout << "3.1415926的单精度表示:" << f1 << endl;
	cout << "3.1415926的双精度表示:" << d1 << endl;
	//科学计数法
	float f2 = 3e2;
	float f3 = 3e-2;	
	cout << "表示科学计数:" << f2 << "和"  << f3 << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


2.3 字符型:char

  • 作用:字符型变量用于显示单个字符
  • C和C++中字符型变量只占用1个字节;
  • 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元。

代码:

/*********************************************************************
    程序名:字符型
    作者: Sweitena
    日期: 2021-01-13 20:52
    说明:【作用】字符型变量用于显示单个字符
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	//字符型 用于显示单个字符
	cout << "③字符型" << endl;
	//字符型变量创建-要用单引号,单引号里只能有一个字符
	char ch = 'a';
	cout << ch << endl;
	//字符型变量对应ASCII编码
	cout << "a对应的ASCII码值:" << (int)ch << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


2.4 字符串型:char

  • 作用:字符型变量用于表示一串字符
  • 注意:头文件需包含< string >

代码:

/*********************************************************************
    程序名:字符串型
    作者: Sweitena
    日期: 2021-01-13 20:55
    说明:【作用】字符型变量用于表示一串字符
*********************************************************************/
#include <iostream>
using namespace std;
#include <string>

int main() {

	cout << "④字符串型" << endl;
	//C语言风格的字符串
	char str1[] = "hello world";
	//C++风格的字符串
	string str2 = "hello world";//头文件#include <string>

	cout << str1 << endl;
	cout << str2 << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


2.5 布尔类型: bool

  • 作用:布尔数据类型代表真或假的值
  • 布尔类型只有2个值:true 真(本质是1)// false 假(本质是0);
  • 布尔类型只占1个字节。

代码:

/*********************************************************************
    程序名:布尔类型
    作者: Sweitena
    日期: 2021-01-13 20:58
    说明:【作用】布尔数据类型代表真或假的值
*********************************************************************/
#include <iostream>
using namespace std;
#include <string>

int main() {

	cout << "⑤布尔类型" << endl;
	//创建bool数据类型
	bool flag = true;
	cout << flag << endl;  //1
	flag = false;
	cout << flag << endl;  //0

	cout << "size of bool:" << sizeof(bool) << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


2.6 枚举类型:enum

  • 枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
  • 如果一个变量只有几种可能的值,可以定义为枚举类型。
  • 作用:将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。
  • 创建枚举时,需要使用关键字 enum。枚举类型的一般形式为:
enum 枚举名{ 
     标识符[=整型常数], 
     标识符[=整型常数], 
     ... 
     标识符[=整型常数]
     } 枚举变量;

代码:

/*********************************************************************
    程序名: 枚举类型
    作者: Sweitena
    日期: 2021-07-10 13:19
    说明: 以days变量的三种可能的值为例,给出了两种用switch结构的例子
*********************************************************************/
#include <iostream>
using namespace std;

enum days {one, two, three}; //定义一个天数枚举
enum rank {first=3, second=6, third=9}; //定义一个排序枚举

int main() {
/**************************************************************************
例1 :
     直接用变量作为判断条件
说明:
     初始时给变量一个枚举组合中的一个名称,并以此判断该变量。
**************************************************************************/
	enum days d = one;  //变量d的类型为days,d被赋值为one   
	switch (d) {
		case one:
			cout << "one" << endl;
			break;
		case two:
			cout << "two" << endl;
			break;
		default:
			cout << "three" << endl;
			break;
	}
/**************************************************************************
例2 :
    枚举变量对应的值作为条件
说明:
    默认情况下,第一个名称的值为0,第二个名称的值为1,第三个名称的值为2,
	以此类推,也可以给名称赋予一个特殊的值,只需要添加一个初始值即可
**************************************************************************/
	int score = 3;
	switch (score) {
		case first:   //相当于case 3:
			cout << "第一名" << endl;
			break;
		case second:   //相当于case 6:
			cout << "第二名" << endl;
			break;
		case third:   //相当于case 9:
			cout << "第三名" << endl;
			break;
		default:
			cout << "很遗憾未进入前三名" << endl;
			break;
	}
	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


三、修饰符类型

  1. C++ 允许在intchardouble数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。

下面列出了数据类型修饰符:

  • signed
  • unsigned
  • long
  • short
数据类型修饰符
整型intsigned、unsigned、long、short
字符型charsigned、unsigned
双精度doublelong
  1. 修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。
  2. C++ 允许使用速记符号来声明无符号短整数无符号长整数。可以不写 int,只写单词 unsigned、short 或 unsigned、long,int 是隐含的。

代码:

/*********************************************************************
    程序名: 修饰符
    作者: Sweitena
    日期: 2021-07-11 16:40
    说明: 解释有符号整数和无符号整数修饰符之间的差别
*********************************************************************/
#include <iostream>
using namespace std;

int main() {

	short int i;           // 有符号短整数
	short unsigned int j;  // 无符号短整数

	j = 50000;
	i = j;

	cout << i << " " << j << endl;
	/************************************
	  上边的例子的二进制数为下边的运行结果,
	  看到二进制就很好理解了 
	 *************************************/
    char s[40];
	_itoa_s(i, s, 2);
	printf("变量i的二进制数为:%s\n", s);
	_itoa_s(j, s, 2);
	printf("变量j的二进制数为:%s\n", s);
	system("pause");
	return 0;
}

运行结果图:
在这里插入图片描述

【对此例的解释】:对于无符号化为有符号的位数运算,采取 N-2n的计算方法,n 取决于定义的数据类型 int、short、char、long int 等等,N 为无符号数的数值,例如文中的 N=50000,short 为 16 位,计算方法为 50000-216得到 -15536。


四、限定符类型

  • 类型限定符提供了变量的额外信息。
    在这里插入图片描述

【注意】后面再进行补充


五、存储类

  1. 存储类定义为 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。
  2. C + + 存储类是一种类型说明符,该说明符控制对象的生存期、链接和内存位置。
  3. 给定对象只能有一个存储类。
  4. 在函数中定义的变量默认制定自动变量,除非使用 extern 或说明符进行了指定 static、thread_local 。

下面列出 C++ 程序中可用的存储类:

  • auto 自动的
  • register 寄存器的
  • static 静态的
  • extern 外部的
  • mutable 可变的
  • thread_local (C++ 11) 本地线程的
  1. 从 C++ 17 开始,auto 关键字不再是 C++ 存储类说明符,且register 关键字被弃用。

【注意】后面再进行补充


六、运算符

  • 作用:用于执行代码的运算
  • 主要有:算术运算符、赋值运算符、比较运算符、逻辑运算符

3.1 算术运算符

  • 算术运算符作用:用于处理四则运算
  • 算术运算符包括以下符号:

在这里插入图片描述


3.1.1 取模运算

  • 取模运算的本质是求余数
  • 两个数相除除数不能为0,取模时分母也不能为0
  • C++规定两个小数不能做取模运算

代码:

/*********************************************************************
    程序名:取模运算
    作者: Sweitena
    日期: 2021-03-17 14:30
    说明: 取模运算的本质是求余数
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	int a1 = 10;
	int b1 = 3;
	cout << "10对3取模:" << a1 % b1 << endl; //返回1
	int a2 = 10;
	int b2 = 20;
	cout << "10对20取模:" << a2 % b2 << endl; //返回被除数
	/*
	double d1 = 3.14;
	double d2 = 1.1;
	cout << d1 % d2 << endl;  //小数不能做取模运算
	*/
	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


3.1.2 递增递减

  • 前置递增:先让变量+1,然后进行表达式运算
  • 后置递增:先进行表达式运算,后让变量+1

代码:

/*********************************************************************
    程序名:递增递减
    作者: Sweitena
    日期: 2021-03-17 14:35
    说明: 注意变量的值的变化
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	//1.前置递增
	int a = 10;
	++a;
	cout << "a = " << a << endl;
	//2.后置递增
	int b = 10;
	b++;
	cout << "b = " << b << endl;
	//3.前置后置的区别
	//前置递增 先让变量+1,然后进行表达式运算
	cout << "前置递增:" << endl;
	int a2 = 10;
	int b2 = ++a2 * 10;
	cout << "a2 = " << a2 << endl;
	cout << "b2 = " << b2 << endl;
	//后置递增 先进行表达式运算,后让变量+1
	cout << "后置递增:" << endl;
	int a3 = 10;
	int b3 = a3++ * 10;
	cout << "a3 = " << a3 << endl;
	cout << "b3 = " << b3 << endl;

	system("pause");

	return 0;
}

运行结果图:
无


3.2 赋值运算符

  • 作用:用于将表达式的值重新赋给变量

在这里插入图片描述
代码:

/*********************************************************************
    程序名:赋值运算符
    作者: Sweitena
    日期: 2021-03-17 14:58
    说明:【作用】用于将表达式的值重新赋给变量
*********************************************************************/
#include <iostream>
using namespace std;

int main() {
	int a;
	cout << "默认a=10的情况下:" << endl;
	// +=
	a = 10;
	a += 2;   //a = a+2
	cout << "a += 之后的结果是" << a << endl;
	// -=
	a = 10;
	a -= 2;   //a = a-2
	cout << "a -= 之后的结果是" << a << endl;
	// *=
	a = 10;
	a *= 2;   //a = a*2
	cout << "a *= 之后的结果是" << a << endl;
	// /=
	a = 10;
	a /= 2;   //a = a/2
	cout << "a /= 之后的结果是" << a << endl;
	// %=
	a = 10;
	a %= 2;   //a = a%2
	cout << "a %= 取模之后的结果是" << a << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


3.3 比较运算符

  • 作用:用于表达式的比较,并返回一个真值或假值

在这里插入图片描述
代码:

/*********************************************************************
    程序名:比较运算符
    作者: Sweitena
    日期: 2021-03-17 15:17
    说明:【作用】用于表达式的比较,并返回一个真值或假值
*********************************************************************/
#include <iostream>
using namespace std;

int main() {

	int a, b;
	a = 10;
	b = 20;
	// ==
	cout << (a == b) << endl;  //返回0
	// !=
	cout << (a != b) << endl;  //返回1
	// < 或 >
	cout << (a < b) << endl;   //返回1
	// <= 或 >=
	cout << (a <= b) << endl;  //返回1

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


3.4 逻辑运算符

  • 作用:用于根据表达式的值返回真值或假值

在这里插入图片描述

代码:

/*********************************************************************
    程序名:逻辑运算符
    作者: Sweitena
    日期: 2021-03-17 15:21
    说明:【作用】用于根据表达式的值返回真值或假值
*********************************************************************/
#include <iostream>
using namespace std;

int main() {

	int a, b;
	a = 1;
	b = 0;
	//与  && 同真为真,同假为假
	cout << (a && b) << endl;
	cout << (a && !b) << endl;
	//或  ||
	cout << (a || b) << endl;
	cout << (a || !b) << endl;
	//非  !
	cout << !a << endl;
	cout << !!a << endl;

	system("pause");

	return 0;
}

运行结果图:
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值