您的位置:首页 > 其它

C语句基础学习(五、六)——数组和字符串、函数(总结于创智播客讲义)

2019-01-24 15:16 197 查看

五、数组和字符串

1、概述

  • 数组就是在内存中连续的相同类型的变量空间
  • 一个数组可以分解为多个数组元素,可以是基本数据类型或构造类型
  • 按照数组元素类型可以分为数值数组、字符数组、指针数组、结构数组
  • 我们将二维及以上的数组称为多维数组。

2、一维数组

  • 数组名字符合标识符的书写规范(数组、英文字母,下划线)

  • 数组名不能与其他变量名相同,同一作用域内是唯一的。

  • 方括号[]中常量表达式表示数组元素的个数

  • 定义数组时[]内最好是常量,使用数组时[]内既可是常量,也可以是变量

  • d定义数组的同时进行赋值,称其为初始化,全局数组若不初始化,编译器将其初始化为零,局部数组若不初始化,内容为随机值

    int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//定义一个数组,同时初始化所有成员变量
    int a[10] = { 1, 2, 3 };//初始化前三个成员,后面所有元素都设置为0
    int a[10] = { 0 };//所有的成员都设置为0
    
    //[]中不定义元素个数,定义时必须初始化
    int a[] = { 1, 2, 3, 4, 5 };//定义了一个数组,有5个成员
  • 数组名是一个地址常量,代表数组中首个元素的地址

3、二维数组

  • 二维数组的定义
    类型书名符 数组名[常量表达式1][常量表达式2]
  • 其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度
  • 二维数组在概念上是二维:其下标在两个方向上变化,对其访问一般需要两个下标。
  • 在内存中并不存在二维数组,二维数组实际的硬件存储器是连续的编址的,也就是说内存中只有一位数组,即放完一行之后顺次放入第二行,和一维数组存放方式是一样的
  • 数组名是一个地址的常量,代表数组中首个元素的地址

六、函数

1、概述

  • 函数的分类 系统函数,即函数库,用户自定义函数
  • 函数的作用,省去重复代码量,降低代码 重复率
  • 函数可以让程序更加模块化,从而有利于程序的阅读,修改和完善
  • 函数的调用时需要关心的五个要素 头文件:包含指定的头文件
  • 函数名字,函数必须和头文件声明的名字一样
  • 功能:需要知道此函数能干嘛后才调用
  • 返回值,根据需要接收返回值

2、函数的定义

返回类型  函数名 (形式参数)
{
数据定义部分;
执行语句部分;
}
  • 函数名,见名知意,看见函数名字,就能知道函数的功能
  • 形参列表 ,在未出现函数调用时,他们并不会占用内存中的存储单元
  • 如果没有参数,圆括号内容为空,或写一个void关键字
  • 函数体,主要是函数功能实现的过程
  • 返回值,返回值通过函数中return语句获取,return后面可以是一个表达式
  • 如果函数的返回值类型和return语句中表达式的值不一致,则以函数返回类型为准,即函数返回类型决定返回值的类型
  • 如果返回类型不一样,编译器会自动进行类型转换,转换不成功就报错
  • 如果函数带返回值,return后面必须跟着一个值,如果函数没有返回值,函数名字的前面必须写一个void关键字,这时候,我们写代码时也可以通过return中断函数(也可以不用),只是这时,return后面不带内容

3、函数调用

  • 定义函数后,我们需要调用这个函数才能执行到这个函数里的代码段,一个C语言程序有且只有一个main()函数
  • 函数的实参和形参 形参出现在函数定义中,在这个函数体内可以使用,离开该函数则不能使用。
  • 实参出现在主调函数中,进入背调函数后,实参不能使用
  • 实参变量对形参变量的数据传递“值传递”,即单项传递,只由实参给形参,而不能由形参传回给实参。所以必须要用其他的东西去承接。
  • 在调用函数时,编译系统临时给形参分配存储单元,调用结束以后,形参单元被释放。
  • 实参单元与形参单元是不同的单元,调用结束后,形参单元被释放,函数调用结束返回主调函数后则不能再使用该形参,实参单元任保留并维持原值,因此,在执行一个呗调用函数时,形参的值如果发生改变吗,并不会改变主调函数中形参的值。
  • 实参可以是常量、变量、表达式。无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传递给形参。
  • 如果函数定义有返回值,这个返回值我们根据用户要可用可不用,但是,假如我们需要使用这个函数返回值,我们需要定义一个匹配类型的变量来接收。
  • 4、函数的声明

    • 如果使用用户定义的函数,而该函数与调用它的函数(及主调函数)不在同一文件中,或者函数定义的位置在主调函数之后,则必须在调用此函数之前被调用的函数作声明
    • 所谓函数声明,就是在函数尚未定义的情况下,事先将该函数的有关信息通知编译系统,相当于告诉编译器,函数在后面定义,以便使编译能正常进行。
    • 一个函数只能被定义一次,但是可以声明多次
    • 函数定义和声明的区别 定义是指对函数功能的确立,包括指定函数名,函数类型、形参及其类型,函数体等,它是一个完整的、独立的函数单位。
    • 声明的作用则是把函数的名字,函数类型以及形参的个数、类型和顺序(不包括函数体)通知编译系统,以便在对包含函数调用的语句进行编译时,对其进行检查(函数名是否一致,参数的类型和个数是否一致)

    5、Main函数与exit函数

    • 在main函数中调用exit和return结果是一样的,但子函数中调用return只是代表子函数终止了,在子函数中调用exit,那么程序终止

    6、多文件(分文件)编程

    • 分文件编程

    • 把函数声明放在头文件xxx.h中,在主函数包含对应头文件

    • 把头文件对应的xxx.c中实现xxx.h声明的函数

    • 注意头文件重复包含

    • 解决头文件重复包含

      #ifndef SOMEFILE_H

      #define SOMEFILE_H

    • pragma once

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐