C语言浅析函数的用法

目录
  • 问题引入
  • 函数
  • C语言中函数的语法形式
  • 问题
  • 例子
  • 函数的调用过程
  • 函数声明
  • 变量声明
  • 数组声明

问题引入

有时候,我们经常需要在一个程序中,对一个数组进行

键盘输入,打印数组元素值。

有些代码块,功能是相同的,只有数组名和元素个数等参数不一样,

代码形式是一样的,对于同一功能而不同参数的代码块,那么咱就可以

将其封装成一个函数,如果您需要用到这样的功能或者代码块,那么我们

就不需要重复的去写代码块,我们只需要调用这个函数。

函数

  • 函数是完成某个功能的指令序列的封装。
  • 函数有什么特点:
  • 相同功能的代码块,重复利用、模块化思想。

C语言中函数的语法形式

函数返回值类型 函数名(输入参数列表) --> 函数头

{

函数的具体实现 --> 函数体

}

“函数返回值类型”:

函数最终返回的结果的类型。

“单值类型” : 结果用一个寄存器或两个寄存器可以保存的值。

int / long

void : 表示该函数无返回值。(void不可以省略)

问题

return语句后面的那个表达式的值,就是函数调用表达式的值。

但是有些函数并没有返回值,难道说这个函数调用表达式的值没有值吗?

函数调用表达式任然会有一个值,只不过我们不知道这个值时多少,R0中

一定会有一个确定的值(undefine,未知)

例子

void print_array(int a[], int n)
			{
				int i;
				for(i = 0 ; i < n ; i++)
				{
					printf("%d ", a[i]);
				}
				printf("\n");
				//return ;
			}

“函数名” : C语言中标识符的规定。

array_sum 
               Shuzu_he 
                  “输入参数列表” : 规定输入参数必须要有 类型 参数名 ,
                 参数与参数之间用 ',' 隔开
    类型1 参数名1 , 类型2 参数名2 , .......

void : 表示该函数不带参数。(void可以省略)

return语句 :

return 返回的意思。return只能用在函数内部。

表示函数结束的意思。

return ; 函数结束,不带任何返回值。

在函数的返回值类型为void的时,可能需要用到上述语句。 return 表达式 ; 函数结束,并且带一个返回值,“表达式”的值。

函数的返回值类型,就是return 语句后面的“表达式”的值的类型。

函数的调用过程

函数调用: 调用一个已经实现了的 函数去执行函数中封装的指令序列。

a: 需要指定是哪个函数/任务 ,指定任务名/函数名

b: 完成该任务/函数 需要有哪些实际上的参数(实际参数)

实际参数(实参): 调用该函数式传入的参数。

形式参数(形参): 定义或设计该函数时的参数。

参数的传递,是将 形参 = 实参的值!!

“实参” : 就是一个表达式

指定实参时,不需要指定实参的类型。

实参需要与形参一一对应(不仅仅实参与形参的个数对应,

并且实参与形参的类型也要相对应)!!!

例:

int main()
			{
				int a[10];
				input_array(a , 10);//调用函数
				int s = sum(5  , 6);
				printf("s == %d\n", s);
			}

函数的调用过程        a、把实参的值 赋值给 相对应的形参
        b、跳转到函数中去执行函数中的指令序列。
            直到遇到 return语句 或者 函数语句全部执行完毕。
            return 后面的表达式的值,将作为整个函数调用表达式的值。 
            当函数执行完毕,那么此时CPU会回到函数调用处,
            继续往下面运行。

函数声明

就是告诉编译器 这个“名字(标识符)”是一个函数名,

在后面的某个位置会定义的。

函数声明: 
    void input_array(int arr[], int n)  ;    //函数头

外部的函数声明:

extern 外部函数的头部;

本文件中的函数的声明:

函数头部分 ;

变量声明

外部的全局变量的声明 :

extern 变量的类型 变量;

例子: 假设你想要在1.c中去使用2.c中的那个变量

2.c                  1.c 
                    //对2.c中变量a进行外部声明 
                    extern int a;
int a = 250;         printf("2.c =>  a ==%d\n", a);

数组声明

int a[3][4];

数组的声明与普通变量的声明类似!!!

到此这篇关于C语言浅析函数的用法的文章就介绍到这了,更多相关C语言函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言深入了解函数

    目录 1. 函数的概念 2. 函数的分类 从定义角度分 从参数角度分类 从返回值角度分 3. 函数的定义 4. 函数的声明 5. 函数的调用 6. 递归函数 1. 函数的概念 函数是c语言的功能单位,实现一个功能可以封装一个函数来实现. 定义函数的时候一切以功能为目的,根据功能去定函数的参数和返回值. 函数就是将特定功能的代码封装在一个函数内部,当使用这些代码时,只需要调用函数即可. 2. 函数的分类 从定义角度分 库函数(即函数是谁实现的) 自定义函数 系统调用(操作系统实现的函数) 从参数角

  • C语言超细致讲解函数递归

    目录 前言 什么是递归 递归的两个必要条件 题解递归 递归与迭代 练习题 结束语 前言 最近被函数递归困恼许久,今天就带领大家一起探秘递归. 什么是递归 程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接 调用自身的 一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略 只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量. 递归的主

  • C语言超全面讲解字符串函数

    目录 1.gets函数 2.puts函数 3.strcat函数 4.strcpy函数(strncpy函数) 5.strcmp函数(strncmp函数) 6.strlen函数 7.strlwr函数 8.strupr函数 9.strstr函数 注意:在使用字符串处理函数时,一定要使用#include <string.h>开头 1.gets函数 其形式为:gets(字符数组)——输入字符串的函数 作用是从终端输入一个字符串到字符数组,并且得到一个函数值. 2.puts函数 其形式为:puts(字符数

  • C语言函数封装及变量的作用域

    目录 1. for循环示例 2. 模拟实现投票系统.switch 3. 计算字符串空格.数字等数据数量 4. 字符串转整数. 5. 整数转字符串 6. 浮点数转字符串 7. 字符串转浮点数 8. 函数的特性与用法 9. 判断平年和闰年 10. 将数组当做函数的形参 11. 计算字符串长度 12. 全局变量.静态变量.局部变量.常量 13. 字符串进阶练习作业 1. for循环示例 #include <stdio.h> int main() { int i,j; int len=4; for(i

  • C语言深入详解四大内存函数的使用

    目录 1.memcpy 2.memmove 3.memcmp 4.memset 1.memcpy 与字符串函数 strcpy 类似,也是进行拷贝.但是需要注意的是,strcpy 是针对字符串进行拷贝,而 memcpy 是针对内存进行拷贝. 如何理解呢?strcpy 进行拷贝的时候,只能一个字节一个字节的拷贝,但要实现 整型.浮点型等数据类型拷贝的时候,就不得不用到 memcpy 了. 我们观察 strcpy 的函数声明: char * strcpy ( char * destination, c

  • C语言用函数实现反弹球消砖块

    本文实例为大家分享了C语言用函数实现反弹球消砖块的具体代码,供大家参考,具体内容如下 一.项目描述和最终的成果展示 这是在上一次弹跳小项目上进行了一系列的优化和封装.项目: 弹跳的小球上次没有用函数进行的封装.这次在上次的基础上进行封装和一些功能的优化. 最终效果图如下: 二.封装后的弹跳小球 代码如下: #include<stdio.h> #include<string.h> #include<conio.h> #include<windows.h> //

  • C语言超详细讲解函数指针的运用

    目录 前言 计算器的例子 回调函数 转移表 前言 前面我们学习了各种各样的指针类型,有些指针可以说是稀奇百怪,特别是函数指针,有些朋友可能觉得,函数指针有些多余,调用函数为什么要用指针调用,直接调用不好吗? 接下来我们从具体的实例来回答同学们的问题,加深对函数指针的理解. 计算器的例子 接下来我们写一个简单的计算器程序,完成不同的计算功能比如加减乘除: #include <stdio.h> //相加函数 int add(int a, int b) { return a + b; } //相减函

  • C语言浅析函数的用法

    目录 问题引入 函数 C语言中函数的语法形式 问题 例子 函数的调用过程 函数声明 变量声明 数组声明 问题引入 有时候,我们经常需要在一个程序中,对一个数组进行 键盘输入,打印数组元素值. 有些代码块,功能是相同的,只有数组名和元素个数等参数不一样, 代码形式是一样的,对于同一功能而不同参数的代码块,那么咱就可以 将其封装成一个函数,如果您需要用到这样的功能或者代码块,那么我们 就不需要重复的去写代码块,我们只需要调用这个函数. 函数 函数是完成某个功能的指令序列的封装. 函数有什么特点: 相

  • GO语言延迟函数defer用法分析

    本文实例讲述了GO语言延迟函数defer用法.分享给大家供大家参考.具体分析如下: defer 在声明时不会立即执行,而是在函数 return 后,再按照 FILO (先进后出)的原则依次执行每一个 defer,一般用于异常处理.释放资源.清理数据.记录日志等.这有点像面向对象语言的析构函数,优雅又简洁,是 Golang 的亮点之一. 代码1:了解 defer 的执行顺序 复制代码 代码如下: package main import "fmt" func fn(n int) int {

  • Linux 中C语言getcwd()函数的用法

    Linux 中C语言getcwd()函数的用法 先来看该函数的声明: #include<unistd.h> char *getcwd(char *buf,size_t size); 介绍: 参数说明:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小. 普通的用法会是这样: #define MAX_SIZE 255 char path(MAX_SIZE); getcwd(path,sizeof(path)); puts(path);

  • c语言abort函数实例用法

    1.abort函数的作用是异常终止一个进程,意味着abort后面的代码将不再执行. 2.当调用abort函数时,会导致程序异常终止,而不会进行一些常规的清除工作. 实例 #include <stdio.h> #include <stdlib.h> int main(void) { puts( "About to abort..../n" ); abort(); puts( "This will never be executed!/n" );

  • Go语言基础函数基本用法及示例详解

    目录 概述 语法 函数定义 一.函数参数 无参数无返回 有参数有返回 函数值传递 函数引用传递 可变参数列表 无默认参数 函数作为参数 二.返回值 多个返回值 跳过返回值 匿名函数 匿名函数可以赋值给一个变量 为函数类型添加方法 总结 示例 概述 函数是基本的代码块,用于执行一个任务 语法 函数定义 func 函数名称( 参数列表] ) (返回值列表]){ 执行语句 } 一.函数参数 无参数无返回 func add() 有参数有返回 func add(a, b int) int 函数值传递 fu

  • 彻底掌握C语言strcpy函数的用法

    目录 1.函数介绍 1.1.函数接口 1.2.函数分析 2.库函数strcpy源代码 2.1.库函数分析 3.模拟实现strcpy函数 3.1.模拟实现 写在后面 strcpy函数详解如下 1.函数介绍 1.1.函数接口 char * __cdecl strcpy(char * dst, const char * src); 这里是库函数里面的函数定义接口.该函数作用是将一组字符串复制到另一组字符串中去,就是所谓的 复制字符串函数. 1.2.函数分析 1.这里是将源字符串拷贝到目标字符串空间中去

  • 彻底掌握C语言strcat函数的用法

    目录 1.函数介绍 1.1.函数接口 1.2.函数分析 1.3.函数的简单使用 2.库函数strcat源代码 库函数分析 3.模拟实现 strcat 函数 模拟实现 总结分析 写在后面 strcat函数详解如下 1.函数介绍 1.1.函数接口 char* __cdecl strcat (char * dst, const char * src); 这里是库函数里面的函数定义接口.这个函数是将字符串src连接到dst中去,就是连接字符串函数. 1.2.函数分析 分析: 1.dst 和 src 字符

  • 易语言lineto函数的用法总结

    是lineto函数的用法,隶属于gdi32.dll ! vb声明: VB声明 Declare Function LineTo Lib "gdi32" Alias "LineTo" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long 说明 用当前画笔画一条线,从当前位置连到一个指定的点.这个函数调用完毕,当前位置变成x,y点 返回值 Long,非零表示成功,零表示失败 参数表 参数 类型及说明 h

  • R语言-summary()函数的用法解读

    summary():获取描述性统计量,可以提供最小值.最大值.四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计等. 结果解读如下: 1. 调用:Call lm(formula = DstValue ~ Month + RecentVal1 + RecentVal4 + RecentVal6 + RecentVal8 + RecentVal12, data = trainData) 当创建模型时,以上代码表明lm是如何被调用的. 2. 残差统计量:Residuals Min 1Q M

  • C语言sqrt函数的实例用法讲解

    c语言sqrt函数的用法 sqrt函数用于计算一个非负实数的平方根. sqrt的函数原型: 在VC6.0中的math.h头文件的函数原型为double sqrt(double); 说明:sqrt即Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力. 头文件:math.h 程序示例: #include <math.h> #include <stdio.h> int main(void) { double x = 4.0, result

随机推荐