C++基础知识学习笔记(1)
资料来源
简单知识点
创建项目
-
用VS创建了一个C++的空项目。
-
在【源文件】中创建一个cpp文件
-
书写以下代码并运行
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world" << endl;
system("pause");
return 0;
}
注释
- 单行注释:
//
- 跨行注释:
/* */
变量
变量定义的语法:数据类型 变量名 = 变量值
int a = 100;
cout << "a = " << a << endl;
常量
有两种:
- 宏常量
#define PI 3.1415926
int main()
{
//PI = 3;//会报错,不能再修改了
cout << "PI = " << PI << endl;
system("pause");
return 0;
}
注意#define
的位置一般放在文件头部(方便集中浏览和修改),当然也能放到函数里面(在调用位置前面)。
- const修饰的常量
int main()
{
const int PI = 3.14;
//PI = 3;//不能再修改了
cout << "PI = " << PI << endl;
system("pause");
return 0;
}
标识符命名规则
- 不能用关键字
- 只能使用字母、数字、下划线
- 开头不能用数字
- 区分大小写
- 建议命名时见名知义(非强制)
数据类型
数据类型的意义:给变量分配合适的内存空间。
整型
short a1 = 1;
int a2 = 1;
long a3 = 1;
long long a4 = 1;
cout << a4 << endl;
//short取值范围:-32768 到 32767
short a1 = 32767;
short a2 = 32768;
cout << a1 << endl;//32767
cout << a2 << endl;//-32768
查看类型所占内存长度
使用sizeof(数据类型 / 变量)
short a = 1;
int size_a = sizeof(a);
int size_int = sizeof(int);
cout << size_a << endl;//2
cout << size_int << endl;//4
cout << sizeof(long) << endl;//4
cout << sizeof(long long) << endl;//8
实型(浮点型)
- 单精度float
- 双精度double
float f1 = 3.14f;//如果不加f会将其当做double转为float
cout << f1 << endl;
double d1 = 3.14159265354;
cout << d1 << endl;//默认输出一个小数,会显示6位有效数字
cout << "float占用空间:" << sizeof(float) << endl;//4
cout << "double占用空间:" << sizeof(double) << endl;//8
科学记数法:
float f2 = 3e5;
cout << f2 << endl;//300000
float f3 = 3e-2;
cout << f3 << endl;//0.03
字符型
用于表示单个字符。
char ch = 'a';
char ch = 'd';
cout << ch << endl;//d
cout << sizeof(char) << endl;//1
注意:
- 用单引号
- char占一个字节。
- 字符变量存储的不是字符本身,而是其ASCII码。
查看字符型变量的ASCII码:
int a = (int)'a';
cout << a << endl;//97
a:97
A:65
转义字符
表示一些不能显示出来的ASCII码。
常用的转义字符有:\n
(换行)、\\
(反斜杠)、\t
(水平制表)
字符串型
用于表示一串字符。
两种风格:
- C风格字符串
char str[] = "hello";
- C++风格字符串
string str2 = "world";
有的VS低版本中需要加入头文件才能支持string:#include <string>
布尔类型
代表真假,有两种值:true(本质是1)、false(本质是0)。
占一个字节。
bool a = true;
bool b = false;
cout << a << endl;//1
cout << b << endl;//0
cout << sizeof(bool) << endl;//1
数据的输入
作用:从键盘获取数据。
注意:
- 针对int、float、double等数值型,输入的值如果无法转为int,则转为0.
- 针对bool,输入的值如果能转为非0的int,则转为1,否则转为0.
运算符
算数运算符
注意:
- 整数相除,结果还是整数,会去除小数。
- 被除数为0会报错。
- 取模是求余数。
- 两个整数才能做取模。
赋值运算符
比较运算符
cout << (10 < 9) << endl;//0
逻辑运算符
cout << !100 << endl;//100是真,取反为假
程序流程结构
顺序结构、选择结构、循环结构
支持三目运算符:
表达式 ? 值1 : 值2
- 三木运算符可以返回变量:
(a > b ? a : b) = 100
switch语句:
- 只能支持整型或者字符型,不支持区间
goto语句:
无条件跳转到某个标记(不建议使用)。
cout << 1 << endl;
cout << 2 << endl;
goto FLAG;
cout << 3 << endl;
cout << 4 << endl;
FLAG:
cout << 5 << endl;
cout << 6 << endl;
一维数组
三种定义方式:
一维数据名称的用途:
- 统计整个数组在内存中的长度
统计数组从起始位置到末尾位置的长度:sizeof(arr)
第一个元素的长度:sizeof(arr[0])
数组元素个数等于前两者相除了。 - 获取数组在内存中的首地址
打印数组首地址(16进制):
cout << "数组首地址:" << arr2 << endl;//000000C7FBBCFCA8
cout << "数组首地址:" << (int)arr2 << endl;//-71500632 强转int了
//打印各个元素的地址
cout << "元素1的地址:" << (int)&arr2[0] << endl;//-71500632
cout << "元素2的地址:" << (int)&arr2[1] << endl;//-71500628 (和元素1的地址相差4个字节,正好是一个int的大小)
注意:数组名是一个常量,不能给其再赋值。
二维数组
四种定义方式:
int arr[4][4];
int arr2[2][1] = { {1}, {2} };
int arr3[2][1] = { 1, 2 };
int arr4[][1] = { {1}, {2} };
二维数组名称用途:
- 查看数组所占内存空间
- 查看二维数组首地址
函数
int add(int n1, int n2) {
return n1 + n2;
}
int main()
{
cout << add(1, 2) << endl;
system("pause");
return 0;
}
值传递:
- 函数调用时,实参的值传递给函数定义中的形参
- 形参的值修改,不会影响实参的值。
函数的声明:
- 为了告诉编译器函数的名称,以及如何调用函数。
- 函数的主体可以单独定义。
- 函数可以声明多次,但定义只有一次。
//用函数声明,提前告诉编译器函数存在
int add(int n3, int n4);
int main()
{
cout << add(1, 2) << endl;
system("pause");
return 0;
}
int add(int n1, int n2) {
return n1 + n2;
}
函数的分文件编写:
- 头文件add.h中,声明函数:
int add(int n1, int n2);
- 源文件add.cpp中,定义函数:
#include "add.h"
#include <iostream>
using namespace std;
int add(int n1, int n2)
{
int n3 = n1 + n2;
cout << n3 <<endl;
return n3;
}
注意:#include时,双引号表示自定义的头文件
- main函数中引入头文件,调用头文件中的函数:
#include <iostream>
using namespace std;
#include "add.h"
int main()
{
cout << add(1, 4) << endl;
return 0;
}