当前位置:   article > 正文

C++基础语法详解_c++基本语法

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<n; 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 函数调用的一般过程

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


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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号