欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言基础:004

程序员文章站 2022-05-24 15:37:02
c语句的作用和分类 控制语句 函数调用语句 由一个函数调用加一个分号构成 例如:printf("haha"); 表达式语句 由一个表达式加一个分号构成(...

c语句的作用和分类

控制语句

C语言基础:004
C语言基础:004

函数调用语句

 由一个函数调用加一个分号构成
例如:printf("haha");
 

表达式语句

  由一个表达式加一个分号构成(比如赋值语句)
  

空语句

   只有一个分号
   

复合语句

    用{}把一些语句和声明括起来成为复合语句(又称语句块)
    

选择:

     1.if(表达式)
     语句;

2.if(表达式)
      语句1;  
  else 
      语句2;

3.   if(表达式1)语句1;
     else if(表达式2)语句2;
     else if(表达式3)语句3;
         …
     else 语句n;

4.条件运算符     (a>b)?a:b;
     说明:条件为真,表达式取值a,否则取值b

5.switch() case:
     

循环:

      for(; ; ){ }
while语句 先判断表达式后执行.
do-while语句 先执行语句后判断表达式.
goto语句 实现程序跳转(尽量少使用).
      

数组

       1.一组有序数据的集合
2.每一个元素都属于同一个数据类型
       

一维数组

        定义的形式:类型符 数组名[常量表达式]  (不能动态定义)
引用形式:数组名[下标]

初始化:
1.定义时全部赋值
例如:int a[3]={1,23,4};
2.定义时部分元素赋值
例如:int b[12]={1,2,33,4};
3.个数已定可以不指定长度
例如:int c[]={1,2,34,5};

例子:
#include
int main(){
    int i;
    int f[20]={1,1};
    for(i=2;i<20;i++) 
        f[i]=f[i-2]+f[i-2];
    for(i=0;i<20;i++)
    {
        if(i%5==0)
        printf("\n");
        printf("%12d",f[i]);
    }
    printf("\n");
    return 0;

} 
        

C语言基础:004

二维数组

         定义: 类型说明符 数组名[常量表达式][常量表达式]
引用:数组名[下标][下标]

初始化:
1.分行给二维数组赋值(里面的括号代表行值)
int a[3][4]={{1,2,3,4},{2,3,4,5},{2,3,4,5}};
2.所有的数据都写在一个花括号内
int a[3][4]={1,2,3,4,2,3,4,5,2,3,4,5};
3.对部分元素进行赋值
int a[3][4]={{1},{5},{8}};
4.一维长度不指定,二维长度不能省
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
         

字符数组(c语言里没有字符串类型,字符串存放在字符数组中)

          初始化:char c[10]={'i','','a','m','','h','a','p','p','y'};

c系统用在字符数组存储字符串常量时,会自动加一个\n作为结束符
          

C语言基础:004
输入和输出:
1.逐个字符输入和输出格式符 “%c”
2.将整个字符串一次性输入用”%s”

使用字符串处理函数

C语言基础:004
C语言基础:004
C语言基础:004
C语言基础:004
C语言基础:004
C语言基础:004
C语言基础:004
C语言基础:004

函数

概述

           在c语言中,函数是来完成子程序或者某个模块的功能。有主程序或者其他函数调用,其他函数之间可以相互调用。
同一函数可以被一个或多个函数任意次调用。
 注意:
a、一个c程序有一个或多个程序模块组成,每一个程序模块作为一个源程序文件。一个源文件可以为多个c程序共用。
b、程序在编译时是以源文件为单位进行编译,而不是以函数为单位进行编译。一个源文件就是一个编译单元
c、c程序的执行是从main函数开始,也是在main函数中结束整个程序
d、所有函数是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。
函数之间可以相互调用,但不能调用main函数。main函数是系统调用的。
e、从用户使用角度看,函数分为两种:
    (1)标准函数。标准函数即函数库,它由系统提供。不同的c语言编译系统提供的标准函数的数量和功能或有不同,但是基本函数是一样的。
    (2)用户自定义函数。
f、从函数形式看,函数分为两种:
    (1)有参函数。
    (2)无参函数。在调用函数时,主调函数通过参数向被调函数传递数据
           

函数的定义

            定义无参函数的一般形式:
 类型表示符 函数名()
{
     声明部分
    语句部分
}

2、函数的定义
            

             定义无参函数的一般形式:
 类型表示符 函数名()
{
     声明部分
    语句部分
}
             

              }

空函数就是没有函数体的函数,如:

void test(){ ... }
              

               定义函数时指定的参数称为“形参”,调用函数时传递的参数称为“实参”。
a、在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配内存单元。
  在调用结束后,形参所占用的内存单元也被释放。
b、实参可以是常量、变量或表达式,如:max(3, a+b);
c、在被定义的函数中,必须指定形参的类型
d、实参和形参的类型应相同或赋值兼容。
e、在c语言中,实参向形参数据传递是“值传递”,单向传递,只由实参传递给形参,而形参不能传递给实参。在内存中形参和实参是不同的内存单元。
因此,改变形参的值不会影响实参的值。
               

函数的返回值

                通常,希望通过函数调用是主调函数能得到一个确定的值,这就是函数的返回值。
a、函数的返回值是通过函数中的return语句获得的。return语句将被调用函数中的一个确定值带回主调函数中去。如果需要从被调用函数带回一个函数值,
  被调函数中必须包含return语句。如果不需要从被调函数带回函数值可以不需要return语句。一个函数可以有多个return语句,执行到哪个return语句,
  哪个语句就起作用。
b、函数值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类型。c语言中,凡是不加类型说明的函数,
  自动按整型处理。在turbo c 2.0中不写返回类型可以通过,turbo c++ 3.0编译时不能通过。所以建议读者在定义时对所有函数都指定函数类型。
c、在定义函数是指定的类型应该与return返回类型一致。如果函数值的类型和return语句中表达式值类型不一致,则按照函数类型为准。
d、对于不带回值的函数,应当用“void”定义函数为“无类型”或称“空类型”。此时函数体中不得出现return语句。
                

函数调用

                 函数调用的一般形式为:函数名(实参列表);如:
代码如下:
int a = max(2, 4);
按函数在程序中出现的位置来分,可以有以下3种函数调用方式:
a、函数语句。把函数调用作为一个语句。此时不许要函数返回值。如: show();
 b、函数表达式。函数出现在一个表达式中,这种表达式称为函数表达式,需要函数返回一个确定的值。如:a = 2*max(a, b);
 c、函数参数。函数调用作为一个函数的参数。如:m = max(a, max(b, c));
                 

对被调函数的声明和函数原型

                  在一个函数中调用另一个函数需要具备以下条件:
a、被调函数必须是已经存在的函数
b、如果使用函数库,还应该在文本文件开头用#include命令将调用有关库函数时所需用到的信息“包含”到本文件中来。如:#include 
  其中“stdio.h”是一个“头文件”。在stdio.h文件中包含了输入输出库函数所用到的一些宏定义信息。如果不包含stdio.h文件的信息,
  就无法使用输入输出库中的函数。
c、如果使用用户自己定义的函数,而该函数的位置在调用它的函数的后面(在同一个文件中),应该在主调函数中对被调用的函数进行声明。如:
                  

局部变量和全局变量

                   a局部变量
 在一个函数内部定义的变量是内部变量,它只能在函数范围内才有效,也就是说只在本函数内才能使用它们,在此函数外部不能使用这些变量。如:
注意:
1)主函数中定义的变量(m、n)也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。
2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。
3)形式参数也是局部变量。
                   

4)在一个函数内部可以在符合语句中定义变量,这些变量值在本符合语句中有效,这种符合语句称为“分程序”或“程序块”。如:

                    b全局变量
在函数外部定义的变量就是全局变量。全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。如:
注意:
(1)全局变量是函数之间交换数据的一个渠道。一般第一个字母大写
(2)建议不再必要时不要使用全局变量。原因如下:全局变量在程序的全部过程中都占用存储单元、使函数的通用性降低,因为依赖外部变量、使
    用过多全局变量会降低程序的清晰性
(3)如果全局变量和局部变量同名,则局部变量优先
                    

变量的存储类别

                      从变量存在的生命周期来看,变量可以分为:静态存储方式和动态存储方式。所谓静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式。
而动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式。

内存中的供用户使用的存储空间的情况。存储空间分为三部分:
 (1)程序区
 (2)静态存储区。(存放:全局变量)内存空间在程序开始时给全局变量赋值、分配空间,一直保存到程序运行结束才释放,
 (3)动态存储区。(存放:函数形参、自动变量、函数调用时的现场保护和返回地址等)调用时才分配空间,调用结束就释放空间。
在c语言中,每个变量和函数有两个属性:数据类型和数据的存储类别。

存储类别分为量大方式:
 1)、静态存储类别 
2)、动态存储类别

具体包含4种:自动的(auto)、静态的(static)、寄存器(register)、外部的(extern)
a、auto
 b、static
 c、register
 d、extern
                     

内部函数和外部函数

                      a、内部函数
如果一个函数只能被本文件中其他函数调用,则称为“内部函数”。在定义内部函数时,在函数名和函数类型前面加上static。语法如下:


b、外部函数。
在定义函数时,如果在函数首部的最左端加关键字extern,则表示此函数是外部函数,可以供其他文件调用。如: