• C++基础语法详解


    目录

    1 - 常量与变量

    1.1 常量

    1.2 变量

    1.3 变量的分类 

    2 - C++的三种基本控制结构 

     2.1 顺序结构

    2.2 选择结构

    2.3 循环结构 

    3 - 数组

    3.1 数组的定义与赋值

    3.2 数组的访问

    3.3 二维数组的定义

    4 - 函数

    4.1 函数的定义

    4.2 函数参数的传递 

    4.3 递归函数 


    1 - 常量与变量

    1.1 常量

            在程序中,值始终不变的数据称为常量,如字符常量‘a',整型常量10,实型常量3.14等。

            另外,还有一种用标识符表示的数值不变的常量,称为符号常量。一般符号常量均为大写,如

    const float PI=3.14

    1.2 变量

            变量是一个有名字,有特点属性的存储单元。在程序运行期间,变量的值是可以改变的。变量必须先定义,后使用。

            变量可以在定义时初始化,如

    int a=1,b=1;

            也可以连续赋值,如

    1. int a,b;
    2. a=b=c;

            但不可以边定义边赋值,如

    int a=b=1;//不正确

    1.3 变量的分类 

            变量根据作用域的不同,可分为局部变量和全局变量。

            变量根据存储类别可分为四大类,分别是自动变量、静态局部变量、外部变量、寄存器变量。这四种变量的基本区别如下表所示。

    变量存储类型对照
    序号存储类型标识符变量主要特点说明
    1自动变量auto动态分配存储空间auto经常省略
    2静态局部变量static局部变量在函数调用结束后不会消失,仍保留着原值
    3外部变量extern把外部变量的作用域扩展到定义位置
    4寄存器变量register执行效率远高于内存变量,用于频繁调用的变量

    2 - C++的三种基本控制结构 

            C++的三种基本控制结构是如图1所示。

    图1- C++的三种基本控制结构 

     2.1 顺序结构

            顺序结构按照程序的先后顺序自上而下地执行。图1中,第一幅是顺序执行的,执行完A框所指的操作后,接着执行B狂所制定的操作。

            所有的程序从整体而言都是一种顺序结构。

    2.2 选择结构

            选择结构又称分支结构,此结构包含一个判断框,根据给定的条件p是否成立二选择执行A框或B框。

            选择结构又分为单分枝、双分枝和多分枝三种

    (1)单分枝结构

            单分枝结构的表达式为

    1. if(表达式)
    2. {
    3. 语句1;
    4. }

            单分枝结构的含义:若表达式为真(即值不为0),则执行语句1,否则不执行。若包含多条语句,则加一对“{}”。

    (2)双分枝结构    

            双分枝结构的表达式为

    1. if(表达式)
    2. {
    3. 语句1;
    4. }
    5. else
    6. {
    7. 语句2;
    8. }

            双分枝结构的含义是:若表达式为真,则执行 语句1,否则执行语句2。

    (3)多分枝结构

            多分枝结构往往都是嵌套使用大的,在if语句中又包含一个或多个if语句,称为if语句的嵌套。

            if语句的嵌套表达式为

    1. if(表达式1)
    2. {
    3. 语句1;
    4. }
    5. else
    6. {
    7. if(表达式2)
    8. {
    9. 语句2;
    10. }
    11. else
    12. {
    13. 语句3;
    14. }
    15. }

            else总是与它前面最近且为配对过的if匹配。

            复合语句内的if关键字堆外界而言是不可见的。

            例如:

    1. if(表达式1)//第1个if
    2. {
    3. if(表达式2)//第2个if
    4. {
    5. if(表达式3)//第3个if
    6. {
    7. 语句3;
    8. }
    9. }
    10. else
    11. {
    12. 语句2;//与第2个if相匹配
    13. }
    14. }

    (4)使用switch进行多分枝选择结构

    1. switch(表达式){
    2. case 常量表达式1:语句1;break;
    3. case 常量表达式2:语句2;break;
    4. case 常量表达式n:语句n;break;
    5. default:语句;
    6. }

     注意:

    • 表达式的值必须是整形、字符型或枚举型。
    • 多个case标号可以共用一组语句序列,以实现对多个常量执行同一个操作。
    • default可以省略
    • break表示终止switch,转而执行switch下面的语句;若不佳break,则执行完case后面的分枝后会顺序执行下一个case分枝。

    2.3 循环结构 

    (1)用for语句实现循环。

    1. for(初始表达式1;循环条件表达式2;循环变化表达式3)
    2. {
    3. 循环语句;
    4. }

    注意:

    • 3个表达式都可以省略,但是分号不能省略。
    • 执行时,表达式1只在开始时执行一次,然后判断表达式2是否为真;若为真,则执行循环语句,否则不执行。

    (2)用while语句实现循环

    while语句——当型循环的表达式

    1. while(初始表达式)
    2. {
    3. 循环语句;
    4. }
    •  当表达式为真(表达式为非0)时,执行循环语句。
    • 先判断,后循环。
    • 当有多条语句要执行时,要用花括号把多个语句括起来。
    • 在循环语句中必须有循环改变的语句,否则会出现死循环。

     do…while语句——直到型循环的表达式为

    1. do{
    2. 循环语句;
    3. }while(条件表达式);
    • do…while循环后面的分号一定不能丢;
    • do…while循环先执行、后判断,至少执行一次

    while循环可以理解为先量一下这棵树长度够不够,如果够,我就砍;否则我就走。而do…while循环可以理解为我先把这棵树砍了,在量一量长度,如果够,我就带走;否则我就走 。

    (3)跳转语句

            使用跳转语句可以实现程序执行流程的无条件跳转。

            C++提供了3种跳转语句,分别如下。

    • break语句

            在循环题内的break语句可以使循环立即结束,退出循环继续向下执行。但是break语句只能退出本层循环,如

    1. for(…)
    2. {
    3. while(…)
    4. {
    5. …;
    6. }
    7. for(…)
    8. {
    9. break;
    10. }
    11. }

            若满足上面的if条件,则推出内层的while循环,而不会退出for循环,开始下一次的for循环。

    • continue语句

            continue语句的作用时终止本次循环,开始执行下一次循环。

    • return语句 

            return表示把整个程序流程从被调用函数转向主调函数,并把表达式的值带回给主调函数,实现函数值的返回,返回时可附带一个返回值,有return后面的参数指定;也可用循环题中满足条件时的结束语句。

    3 - 数组

    3.1 数组的定义与赋值

            数组是一组有序数列的集合,数组的定义主要分三部分构成:数据类型、数组名和数组的大小。以下是一个int类型数组的定义

    int arr[5];

            该数组定义了 一个名为a,大小为5的整型数组,相当于定义了5个整型变量,每个变量采用数组名和下标的组合进行标记,而且这5个整型变量值都存储在连续的内存位置,其内存示意图如图2所示。

     图2 - 5个元素的示意图

    数组的输入一般采用循环:

    1. for(int i=0; i
    2. {
    3. cin>>a[i];
    4. }

    3.2 数组的访问

            在数组中,每个数组元素作为单独的变量进行访问和使用,并且第一个元素的下标是0,最后一个元素的下标是n-1。

            例如:定义a数组中的5个元素,则下标为0~4,如果企图访问a[5],则会出现下标溢出。

            数组的变量名表示数组的内存首地址,即a相当于&a[0]。

    3.3 二维数组的定义

            定义一个二维数组的方法为

    int a[2][3]={{1,2,3},{4,5,6}};

            该二维数组的形式如图3所示

     图3 - 二维数组的内存示意图

            而为数组的输入一般采用双重循环的形式,如:

    1. for(int i=0; i<2; i++)
    2. {
    3. for(int j=0; j<3; j++)
    4. {
    5. cin>>a[i][j];
    6. }
    7. }

    4 - 函数

    4.1 函数的定义

            一个函数不可或缺的部分为

    1. 返回值数据类型 函数名(形式参数)
    2. {
    3. 函数体;
    4. return 返回值;
    5. }
    • 函数体是一个复合语句,必须加大括号{};
    • 函数名的命名规则同变量的命名规则;
    • 如果函数具有返回值,则必须说明返回值类型,否则无返回值的函数应当使用void定义,说明函数无返回值;具有返回值的函数,函数体内一定要由return返回一个值。
    • 函数的参数称为形式参数,可以有多个,用逗号分隔;也可以一个都没有,称为无参数函数。形式参数是函数的局部变量。

    4.2 函数参数的传递 

            程序中,实参向形参是单向传递的方式,并且普通变量作为函数参数,实参将值传递给形参。数组元素作为函数参数,也同样属于单项值的传递。

            指针(包括数组名)作为函数参数,由于指针变量和数组名的值均为地址,因此实参和形参之间的传递是地址,其结果是形参指向了实参所指的地址,如

    1. void swap(int *x,int *y)
    2. {
    3. int temp;
    4. temp=*x;
    5. *x=*y;
    6. *y=temp;
    7. }
    8. int a=5,b=10;
    9. swap(a,b);

            其结果是交换了变量a和变量b的值。

            下面拿的函数用普通变量作为参数,是无法实现交换功能的。

    1. void swap(int x,int y)
    2. {
    3. int temp;
    4. temp=x;
    5. x=y;
    6. y=temp;
    7. }
    8. int a=5,b=10;
    9. swap(a,b);

            a和b的值没有发生变化,函数仅仅是交换了其局部变量x和y的值。

            指针和数组名作为参数的形式:

    • 形参是指针,实参是数组名或某个元素的地址;
    • 形参是数组名,实参是指向数组的指针;
    • 形参是指针,实参也是。 

    4.3 递归函数 

            函数体内调用自身称为递归。递归的过程分为递推和回溯两个过程,可以解决的问题有求阶乘、n皇后、斐波那契数列等。

            所有程序从main函数开始顺序执行,函数调用可以看作是一个无条件跳转,跳转到对应函数的指令处开始执行,当碰到return函数或者函数结尾是,在执行一遍无条件跳转,跳转回调用方,执行调用函数后的下一条指令。函数调用的一般过程如图3所示。

    图3 函数调用的一般过程

            递归函数就是一个函数体内直接或者间接调用它自己,没调用一次就进入新的一层。递归函数必须有结束递归的条件。函数在一只递推,直到遇到结束条件才返回。


    好啦 ,以上就是本节的内容啦,希望大家有所收获!

  • 相关阅读:
    Java基础 对象创建流程
    Vulnhub系列靶机---HarryPotter-Aragog-1.0.2哈利波特系列靶机-1
    2.20每日一题(被积函数带绝对值的定积分)
    Springboot毕业设计毕设作品,心理评测系统 开题报告
    Linux 搭建MQTT服务器
    LNK2001 __GSHandlerCheck【error】
    合思·易快报,奔向费控「自动驾驶」无人区
    Vue--Router--嵌套路由(children)的用法
    基于AT89C51单片机的直流数字电压表设计
    redisson中的分布式锁
  • 原文地址:https://blog.csdn.net/weixin_46522531/article/details/126449776