1.2 C语言--函数与数组
- 函数
- 函数的定义
返回值类型函数名(类型形参名[,……]){
函数体
}
- 除了没有访问修饰符外,基本等同于java的函数。
- 良好的程序设计风格要求即使没有返回值,也要使用return;作为最后一条语句,表示函数结束,但没有返回值。
- 自动变量
- 自动变量
- auto 类型名变量名;
- 自动变量也称为动态局部变量,随着函数的加载而加载。因此函数中不同的变量能实现重名。
- 因为自动变量使用最多,因此可以省略。
- 传给函数形参的是函数实参的一个副本,这就是按值传递,所以实参的值是不能在被调用的函数中修改的。
- 静态变量
- 自动变量
static 类型名变量名;
- 自动变量在定义时不会被自动初始化,在退出函数时立即释放内存。
- 静态变量的声明周期是:整个程序运行期间。静态全局变量可以被整个程序访问,静态局部变量只能被方法访问。
- 外部变量
- 外部变量
extern 类型名变量名;
- 在所有函数之外定义。作用域是从定义点到本文件的末尾。
- 寄存器变量
- 寄存器变量
register 类型名变量名;
- 就是把经常访问的数据放到CPU的寄存器中。通常不用的,程序也会自动优化。
- 函数原型
- 因为C语言本质上是从头到尾执行的。函数的定义如果在调用的前面,是无法的使用的。如果函数的定义在调用之后,就必须使用函数原型在预编译时进行声明。告知编译器。
- 怎么做
在文件头部,添加如下命令:
返回值类型函数名(参数列表);
- 函数的设计原则
- 基本设计原则
- 函数行数不能超过50行。
- 行数功能单一,高内聚
- 函数只能有一个入口,一个出口。尽量少的使用全局变量
- 函数的入口处应该对参数的有效性进行检查
- 不能认为一个函数总是成功的,要考虑到调用失败的情况
- 使用return;无论有无返回值
- 在执行敏感操作时:比如除法,开方等要进行操作数和类型检查,防止出现除零,数据溢出,类型转换等问题。
- 某个功能重复超过三遍就应该写成函数。
- 模块化的程序设计
- 要高内聚,低耦合
- 自定而下,逐步求精
- 自定而下
- 先写出结构简单,层次清晰的主程序来表达整个问题
- 逐步求精
- 对子问题进行高级语言的实现
- 程序注释
- 不写做什么,而写想做什么,如何做。
- 基本的功能,作者,开发日期,版本号要加
- 入口参数和出口参数要详细的说明
- 数组
- 一元数组
- 数组的定义与初始化
- 数组:具有相同类型变量的集合
- int score[5]; // int表示数组的基本类型;5这个下标表示维度;C语言中的下标都是从0开始的。
- 为了方式数组长度的不断该表,通常我们会将数组长度定义为常量或者宏
#define SIZE 5
int score[SIZE];
- 数组的初始化
int score[]={1,2,3,4}; // 定义了一个长度为4的数组,并初始化。
int score[4]; // 定义了一个长度为4的数组,并将数组的各个值初始为0.
- 数组的访问
- 数组访问越界:在C中没有OutOfBoundary的错误,越界访问会导致正常的程序也出现问题。
- 二维数组的定义与初始化
- 定义与初始化
int score[3][4]; // 定义了一个三行,四列的数组,且数组中所有的元素初始化为0.
int score[][3]={1,2,3,4,5} // 定义了一个2行3列的数组。且第二行没有数据的地方被初始化为零。
数组的第二维长度的声明永远不能改变。因为C中的数组是连续的空间按行分配的。数组实际上只是代表第一个元素的地址值。
- 向函数传递数组
- 向函数传递数组实际上就是传递的数组的地址值(并且传送的是首地址)。按值传递,传递副本的话会耗费很大的资源,按地址传递提高效率。
1.2 C语言--函数与数组的更多相关文章
- c语言.函数指针数组
函数指针: 一个指向函数的指针.一般用函数名表示. 函数指针数组:元素为函数指针的数组.转移表.c语言中函数不可以定义为数组,只能通过定义函数指针来操作. #include<stdio.h> ...
- c语言函数传递数组
1.传递数组,打印不出来 #include <stdio.h> void solve() { printf(]); } int main() { int i; ;i<n;i++) { ...
- C语言函数返回数组
#include "stdio.h"/*int* set(int a,int *c){ int *b; b=malloc(sizeof(int)*3); c[0]=a; c[1]= ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- C语言中的函数、数组与指针
1.函数:当程序很小的时候,我们可以使用一个main函数就能搞定,但当程序变大的时候,就超出了人的大脑承受范围,逻辑不清了,这时候就需要把一个大程序分成许多小的模块来组织,于是就出现了函数概念: 函 ...
- 第二十三节:Java语言基础-详细讲解函数与数组
函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...
- 3205: 数组做函数参数--数组元素求和1--C语言
3205: 数组做函数参数--数组元素求和1--C语言 时间限制: 1 Sec 内存限制: 128 MB提交: 178 解决: 139[提交][状态][讨论版][命题人:smallgyy] 题目描 ...
- C语言函数不能返回数组,但可以返回结构体
为什么C语言函数可以返回结构体,却不可以返回数组?有这样的问题并不奇怪,因为C语言数组和结构体本质上都是管理一块内存,那为何编译器要区别对待二者呢? C语言函数为什么不能返回数组? 在C语言程序开发中 ...
- C语言的函数指针数组(好绕啊~看完这篇估计就通关了)
转自https://www.cnblogs.com/chr-wonder/p/5168858.html int *(*p(int))[3] 今天有人问这个是啥?我一看直接就懵逼了…… 下面做一些简单的 ...
- c语言的函数指针和函数指针数组的简单demo
今天,简单记录一下,函数指针和函数指针数组的使用,废话不多说,直接贴上代码,里面有详细的注释,方便以后查阅. #include <cstdio> #include <Windows. ...
随机推荐
- VUE3+VITE 常见问题解决
reactive解构最深的一层,失去响应性问题 pinia创建的store,使用结构失去响应性 reactive包裹后的对象 重新赋值失去响应性 无法动态引入图片 在computed中传参数 vue3 ...
- Back Propagation - Python实现
算法特征①. 统一看待线性运算与非线性运算; ②. 确定求导变量loss影响链路; ③. loss影响链路梯度逐级反向传播. 算法推导Part Ⅰ以如下简单正向传播链为例, 引入线性运算与非线性运算符 ...
- journalctl查看内核/应用日志
Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志).日志的配置文件是/etc/systemd/journald.co ...
- File.Exists 判断不了虚拟路径
https://www.shuzhiduo.com/topic/file-exists-%E5%88%A4%E6%96%AD%E4%B8%8D%E4%BA%86%E8%99%9A%E6%8B%9F%E ...
- vue项目打包后,自由修改配置如接口地址等
背景描述: 项目打包后,如果想更换接口域名或者项目名称,就需要再次打包.但是这样子操作有点耗费时间.如果把这些配置写到一个文件中,然后在index.html文件中引入使用,这样子会大大提高工资效率,节 ...
- :)torch转onnx总结--|
torch->onnx 参考:参考连接:https://blog.csdn.net/cxx654/article/details/123011332 1 安装 onnx >python - ...
- SQL Server【提高】事务
事务 事务是作为单个逻辑单元执行的一系列操作,它是一个不可分割的工作逻辑单元.它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 特性 原子性Atomicity 事务是一个完整的操作, ...
- Azkaban 4.0.0 系列(一)-- Solo-Server
下载 链接 https://github.com/azkaban/azkaban/releases/4.0.0.tar.gz 解压 tar -xzvf 4.0.0.tar.gz -C 自定义目标目录 ...
- HTML多媒体
多媒体(一).插入音频.视频和flash在网页中插入音频.视频和flash都是使用embed标签. 语法: <embed src="多媒体文件地址" width=" ...
- crontab执行不生效
背景:不知道什么原因脚本手动执行:正常:crontab执行不生效: 1.将命令所属路径加入到 /etc/crontab中, 2.在shell脚本中加入 source /etc/profile