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
相关文章推荐
- C语句基础学习(七)——指针(总结于创智播客讲义)
- C语句基础学习(八)——内存管理(总结于创智播客讲义)
- 黑马程序员——零基础学习iOS开发——06 字符串、指针、指针和数组、指针和字符串、指针和函数
- 数组基础与字符串(尚学堂视频学习总结_004)
- SQL语句:基础语句和高级函数学习总结
- JAVA基础第三天学习日记_循环语句、函数、数组
- PHP和js数组、字符串、函数不同点基础总结
- 黑马程序员---Java基础总结---语句、函数、数组
- 栋栋晓10:Javascript学习总结:基础知识2(语句,函数,)
- 前端JavaScript基础知识点讲义代码九九乘法表、函数、排序、数组、循环、分支判断、对象、日期函数、装饰器、闭包、堆和栈、字符串
- Sql常见问题总结二(Sql语句怎么样查询IP,游标去重复,各种函数使用,各种取时间格式,字符串精确排序,超时锁问题)
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组的元素的顺序进行反转。
- 黑马程序员---iOS学习基础---数组与函数
- 黑马程序员--学习笔记之SQL基础语句及函数
- 黑马程序员-自己总结的java学习笔记(2)java语句基础。
- 黑马程序员——C语言基础学习(四)---数组和指针的总结学习
- DELPHI基础:字符串、数组操作函数
- 黑马程序员之C#编程基础学习笔记:有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串保存到字符串数组中
- Java笔记1 Java编程基础<2>循环语句、函数(重载)、变量和数组的内存结构
- 数组和字符串的基础题目学习(EPI)