C++学习:基础知识的掌握

1. 注释

写法1:// 单行注释内容

写法2:/* 多行注释内容 */

2. 变量

作用:给一段指定的内存空间起名,方便操作这段内存

语法:数据类型 变量名 = 初始值;

3. 常量

作用:用于记录程序中不可更改的数据

#define 宏常量:#define 常量名 常量值;

const修饰的变量:const 数据类型 常量名 = 常量值;

4. 关键字

作用:关键字是C++中预先保留的单词(标识符)

注意:关键字不能用于定义变量名/常量名,否则会产生歧义

5. 标识符命名规则

作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则

  • 标识符不能是关键字
  • 标识符只能由字母、数字、下划线组成
  • 第一个字母必须为字母或下划线
  • 标识符中字母区分大小写
  • 尽量做到见名知意的效果,方便自己或他人的阅读

6. 数据类型

6.1 整型:

  • short(2字节)
  • int(4字节)
  • long (Windows为4字节,Linux为4字节 或 8字节)
  • long long(8字节)

6.2 实型(浮点型)

单精度 float(4字节)

双精度 double(8字节)

6.3 字符型 char(1字节)

作用:字符型变量用于显示单个字符

语法:char 变量名 = 'a';

注1:使用单引号,不要使用双引号

注2:字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元,测试代码如下:

复制代码
 `char ch = 'a';    
  cout << (int) ch << endl;`

6.4 字符串型

C风格:char 变量名[] = "字符串值";

C++风格:string 变量名 = "字符串值";

注意如果想输入/输出字符串,记得包含头文件:#include <string>

6.5 布尔类型 bool (1字节)

7. sizeof关键字

作用:利用sizeof关键字可以统计数据类型所占内存的大小

语法:sizeof(数据类型 / 变量)

8. 转义字符

作用:用于表示一些不能显示出来的ASCII字符

常用:\n\\\t

9. 数据的输入

作用:用于从键盘获取数据

关键字:cin

语法:cin >> 变量

举例:

复制代码
  int a = 0;  
  cout << "请输入一个整型变量:" << endl;  
  cin >> a;  
  cout << a <<endl;  

10. 运算符

10.1 算术运算符:用于处理四则运算

10.2 赋值运算符:用于将表达式的值赋给变量

10.3 比较运算符:用于表达式的比较,并返回一个真值/假值

10.4 逻辑运算符:用于根据表达式的值返回真值/假值

11. 程序流程结构

C/C++支持最基本的三种程序运行结构:选择结构、循环结构、跳转结构

11.1 选择结构

(1)if语句

复制代码
      形式1:
             if(条件){  
              条件满足执行的语句  
             } 
      形式2:  
             if(条件){   
              条件满足执行的语句  
             }else{  
              条件不满足执行的语句  
             }  
      形式3:  
             if(条件1){  
              条件1满足执行的语句  
              }else if(条件2){  
                 条件2满足执行的语句  
              }else if(条件n){   
                 条件n满足执行的语句  
              }else{  
                 前n种情况都不满足执行的语句  
              }

(2)三目运算符

复制代码
语法:`表达式1 ? 表达式2 : 表达式3`  
解释:如果表达式1的值为真,则执行表达式2,并返回表达式2的结果;反之执行表达式3,并返回表达式3的结果

(3)switch语句

复制代码
`  switch(表达式){  
   case 结果1:执行语句; break;  
   case 结果n:执行语句; break;  
   ......
   default:执行语句; break;  
   }

11.2 循环结构

(1)while循环结构

复制代码
   `while(循环条件){  
     循环语句  
     }`  

(2)do...while循环结构

注意:与while的区别在于do...while会先执行一次循环语句,再判断循环条件

复制代码
    do{
     循环语句
    }while(循环条件)

(3)for循环结构

复制代码
for(起始表达式; 条件表达式; 末尾循环体){  
 循环语句  
}

11.3 跳转结构

(1)break语句

作用:用于跳出选择结构/循环结构

使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环结构

(2)continue语句

作用:在循环语句中,跳出本次循环中余下尚未执行的语句,继续执行下一次循环

(3)goto语句

作用:可以无条件跳转语句

语法:goto 标记;

解释:如果标记的名称存在,执行到goto语句,会跳转到标记的位置

12. 一维数组

(1)定义方式:

  1. 数据类型 数组名[数组长度];
  2. 数据类型 数组名[数组长度] = {值1,值2......};
  3. 数据类型 数组名[] = {值1,值2......};

(2)一维数组名称的用途

  • 可以统计整个数组占用的内存空间为:sizeof(数组名);单位是字节
  • 可以统计第一个元素占用的内存空间为:sizeof(数组名[0]);单位是字节
  • 可以获取数组在内存中的首地址:即数组变量的值

13. 二维数组

(1)定义方式:

  1. 数据类型 数组名[行数][列数];
  2. 数据类型 数组名[行数][列数] = {``{值1,值2......},{值1,值2......},......};
  3. 数据类型 数组名[行数][列数] = {值1,值2......};
  4. 数据类型 数组名[][列数] = {值1,值2......};

(2)二维数组名称的用途

  • 可以统计整个二维数组占用的内存空间为:sizeof(数组名);单位是字节
  • 可以统计二维数组第一行占用内存空间为:sizeof(数组名[0]);单位是字节
  • 可以统计二维数组第一个元素占用的内存空间:sizeof(数组名[0][0]);单位是字节
  • 可以获取二维数组在内存中的首地址:即数组变量的值

14. 函数

14.1 作用:将一段经常使用的代码封装起来,减少重复代码

14.2 语法:

复制代码
 返回值类型 函数名 (参数列表){  
  函数体语句  
  return 返回值;
 }   

14.3 调用:函数名(参数);

14.4 注意:进行值传递时,如果形参发生变化,并不会影响实参。【值传递:即函数调用时实参将数值传入给形参】

14.5 函数的分文件编写

  • 作用:让代码结构更加清晰
  • 一般有4个步骤:
    Ⅰ. 创建后缀名为.h的头文件
    II. 创建后缀名为.cpp的源文件
    Ⅲ. 在头文件中写函数的声明
    Ⅳ. 在源文件中写函数的定义

15. 指针

15.1 作用

  • 可以通过指针间接访问内存;
  • 可以利用指针变量保存地址

15.2 指针变量

定义语法:数据类型* 变量名;

注意:指针也是种数据类型:数据类型*

复制代码
int a = 10;  
int *p;  
p = &a;  // 指针指向数据a的地址 
cout << *p << endl;  // *解引用

15.3 空指针

  • 定义:指针变量指向内存中编号为0的空间

  • 用途:初始化指针变量

  • 注意:空指针指向的内存是不可以访问的

    复制代码
    int* p = NULL;  //指针变量p指向内存中编号为0的空间  
    cout << *p << endl;  // 访问空指针报错,因为内存编号0~255为系统占用内存,不允许用户访问  

15.4 野指针

定义:指针变量指向非法的内存空间

注:空指针和野指针都不是我们申请的空间,因此不要访问。

15.5 const修饰指针

const修饰指针有三种情况:

  • const修饰指针 --常量指针

  • const修饰常量 --指针常量

  • const既修饰指针,又修饰常量

    复制代码
    int a = 10;  
    int b = 10;  
    //1. const修饰的是指针,指针指向可以改,指针指向的值不可以更改  
    const int* p1 = &a;  
    p1 = &b;  //正确  
    //*p1 = 100; 报错  
    
    //2. const修饰的是常量,指针指向不可以改,指针指向的值可以更改  
    int* const p2 = &a;  
    //p2 = &b; 报错  
    *p2 = 100;  //正确  
    
    //3. const修饰指针和常量,指针指向不可以改,指针指向的值也不可以更改  
    const int* const p3 = &a;   
    //p3 = &b; 报错  
    //*p3 = 100; 报错  

15.6 指针和数组

作用:利用指针访问数组中的元素

复制代码
  int arr[] = {1,2,3,4,5,6,7,8,9};  
  int* p = arr;  //指向数组的指针  
  cout << "第一个元素:" << arr[0] << endl;  
  cout << "指针访问的第一个元素:" << *p << endl;  
  for(int i = 0; i < 10; i++){  
     //利用指针遍历数组  
     cout << *p << endl;  
     p++;    
  }  

15.7 指针和函数

作用:利用指针作函数参数,可以修改实参的值

复制代码
  //值传递  
  void swap(int a, int b){  
     int temp = a;  
     a = b;  
     b = temp;  
  }  

  //地址传递  
  void swap(int* p1, int* p2){  
     int temp = *p1;  
     *p1 = *p2;  
     *p2 = temp;  
  }  

16. 结构体

16.1 概念

结构体属于用户自定义的数据类型,允许用户存储不同的数据类型

16.2 语法和使用

语法:struct 结构体名 {结构体成员列表};

通过结构体创建变量的方式有三种:

  • struct 结构体名 变量名;
  • struct 结构体名 变量名 = {成员1值,成员2值 ... };
  • 定义结构体时顺便创建变量

16.3 结构体数组

作用:将自定义的结构体放入到数组中方便维护

语法:struct 结构体名 数组名[元素个数] = { {} , {} ...... {} };

16.4 结构体指针

作用:通过指针访问结构体中的成员

  • 利用操作符 -> 可以通过结构体指针访问结构体属性

16.5 结构体嵌套结构体

作用:结构体中的成员可以是另一个结构体

例如:每个老师辅导一个学员,一个老师的结构体中,记录一个学生的结构体

16.6 结构体做函数参数

作用:将结构体作为参数向函数中传递,传递方式依旧有两种,即值传递和地址传递。

16.7 结构体中const使用场景

作用:用const来防止误操作

学习的课程链接:

黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难

相关推荐
C++ 老炮儿的技术栈7 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
new_zhou7 小时前
C++ 项目 AI 协作指南(Windows / MSVC 环境)
c++·人工智能·windows
水饺编程9 小时前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
Iruoyaoxh9 小时前
类和对象~
开发语言·c++
程序喵大人9 小时前
【C++进阶】STL算法与函数对象 - 04 find、count和any_of把查询写成意图
开发语言·c++·算法
豆沙沙包?9 小时前
c++中引用(P7-P11)
java·c++·算法
wuminyu9 小时前
虚拟线程底层ForkJoinPool的工作窃取算法机制
java·linux·c语言·jvm·c++
吹什么轩9 小时前
c++复习:c++11:lambda表达式
开发语言·c++
不会代码的小猴10 小时前
标准模板库(STL)
开发语言·c++·笔记·算法