首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言笔记】变函数

提到变函数,我们的感觉是不是既熟悉又陌生?感觉熟悉是因为我们平时都在使用着,如我们常使用的printf()函数与scanf()函数就是典型的变函数。...因为printf()函数是变函数我们才可以根据我们的需要灵活地输出变量的值。...//给printf函数传入n个参数 我们可以根据需要给printf()函数传入n个参数,这就是变函数。 感觉陌生是因为我们没有试着创建变函数。...要创建变函数需要包含头文件stdarg.h,并且创建变函数应按照如下步骤进行: 【第一步】定义一个使用省略号的函数原型,如printf()与scanf()函数的原型为 int printf (const...2.0, 3.0, 4.0, 5.0, 6.0); printf("sum1 = %f\n", sum1); printf("sum2 = %f\n", sum2); return 0; } 变函数

1.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言函数:指针的指针

    这是道哥的第013篇原创 前言 今天同事问了一个问题:在函数参数中传递指针的指针,很常用的一个场景,重新梳理一下记录于此,以后如果有类似的问题直接发这篇小总结就可以了。...size个字节的空间,然后返回给main函数中的pData指针。...执行do_work(pData, 128); 这里传递的参数是pData本身,所以进入void do_work(char *p, int size)函数之后,实参pData的内容就赋值给形p,所以指针...代码:版本2 代码的本意是在do_malloc函数中申请堆空间,然后把这块空间的首地址赋值给pData。...在do_malloc函数中,调用系统函数malloc成功之后返回所分配空间的首地址,关键是要把这个首地址送给pData指针,也就是说要让pData指针变量中的值等于这个堆空间的首地址。

    2.1K20

    C语言-函数的定义、声明、传

    前言 C语言函数是非常重要的知识点,一个完整的C语言程序就是由主函数和各个子函数组成的,主函数调用子函数完成各个逻辑功能。 2. 函数C语言里是什么概念?...函数相当于打包代码的过程,程序代码里如果有很多重复代码,可以将重复代码写成一个函数,进行调用。 C语言程序里除了main函数(主)之外的函数都叫子函数,都属于自定义函数。 3. 函数如何定义?...如何编写一个函数函数定于分为几种情况:1. 有形 2.无形 3.有返回值 4....无返回值 /* [函数的名称](函数的形类型) { 函数体 } */ void func1(void) { } int func2(int a) { return 12;...函数如何传入形并接收返回值?

    1.5K10

    C语言-指针作为函数类型

    前言 C语言函数里最常用就是指针传和返回地址,特别是字符串处理中,经常需要封装各种功能函数完成数据处理,并且C语言标准库里也提供了string.h 头文件,里面包含了很多字符串处理函数;这些函数的参数和返回值几乎都是指针类型...func(&a,&b); //func(100,200) printf("a=%d,b=%d\n",a,b); return 0; } void func(int *a,int *b) { int c;...c=*a; *a=*b; *b=c; } //return语句只能返回一个值 //如果函数想返回多个值,可以使用指针(形)实现。...编写一个字符串排序函数 函数功能: 传入字符串,在函数里实现字符串从大到小或者小到大排序。 注意: 从大到小或者小到大排序可以通过函数区分。...='\0'){} return str-p-1; } /* 函数功能: 实现字符串排序.支持从小到大或者大到小 函数: char *p 将要排序的字符串 char flag 选择排序方式

    1.6K30

    c语言函数指针的用法_函数指针作为形

    文章目录 导引 指针函数 指针函数定义 指针函数的三种写法 代码示例 函数指针 定义 代码示例 函数指针和指针函数区别 定义不同 写法不同 用法不同 导引 函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼...,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,...指针函数 指针函数定义 指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。...接着看下面这个函数声明: int *fun(int x,int y); 这和上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。...函数指针 定义 函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。

    62920

    C++函数定义 | 输出有

    C++无函数的定义 函上一节小林已经讲过,从函数形式来看,函数分为无函数和有函数,那么他们有什么不同呢?...定义无函数的一般形式为 类型标识符 函数名([void])//注意void可以省略不写 {   声明部分   语句 } C++有函数的定义 有函数,顾名思义,有参数的函数,和无函数相比,有函数多了参数...,定义如下所示 类型标识符 函数名(形式参数表列) {   声明部分   语句 } 学习了无函数和有函数的不同,接下来看一个例子巩固下知识点 经典案例:C++实现无参数和有参数函数,并输出相应文字描述...PrintFace(3);//调用有函数    return 0;//函数返回值为0  } 执行本程序之后,会输出 我是无函数 ---------------- 3 我是有函数 --------...C++输出有 更多案例可以go公众号:C语言入门到精通

    1.4K2927

    C语言总结_数组与函数练习题

    字符串标准处理函数介绍(string.h)、指针和数组当做函数,指针定义、函数返回指针、void类型定义指针、类型强制转换、常量声明、extern外边引用声明关键字。 1....数组的名称: 就是首地址 在C语言里任何类型的指针(地址)是4个字节 2....函数参数: 指针与数组类型 函数的形: 指针类型与数组类型 示例代码: () #include //标准输入输出 #include //字符串处理头文件...函数和返回值: 都是地址 (1)数组类型可以当做函数。void func(char buff[]){} (2)数组类型不能当做函数返回值类型。...char buff[] func(void){} 错误的 函数如果要返回地址类型: 必须使用指针类型。 函数如果要传入地址类型: 可以使用指针类型或者数组类型。

    84020

    C语言函数参数详解】——实际参数(实参)&形式参数(形

    在调用有函数时,函数名后面括号中的参数称为“实参”,是我们真实传给函数的参数,实参可以是:常量、变量、表达式、函数等。...: 我们如果在函数外部使用函数,这是不可行的。...2.形函数调用过程中才实例化(分配内存单元) 函数调用之前,形还未创建 函数调用过程中,形才被实例化 函数调用结束,形生命周期结束,被销毁 三.形参与实参的关系 了解了什么是函数的形和实参,...他们的关系是: 形实例化之后其实相当于实参的一份临时拷贝。 这里我们对函数的实参和形进行分析: 我们来尝试写一个函数交换两个整形变量的内容。...这是因为在函数调用时,形x,y是实参num1,num2的一份临时拷贝,形和实参并没有建立真正意义上的联系,形x,y是两个独立的变量,和实参num1,num2分别占用不同的内存空间,在这里,形和实参只是数值相同罢了

    4.2K10

    C 语言】数组 ( 一维数组形退化 | 二维数组形退化 | 函数等价关系 )

    文章目录 一、一维数组形退化 二、二维数组形退化 三、数组形等价关系 一、一维数组形退化 ---- C 中将 一维数组 作为参数 , 传递到函数中 , 该 一维数组 会退化为 指针 ; 将 int...array[10] 数组 , 作为参数 , 传递到函数中 , void fun(int array[1000]){} 与 void fun(int *array){} 是等价的 , 函数中处理 array...数组时 , 不知道该数组的元素个数 , 编译器只能确认 , 该参数是一个 int * 指针类型 ; 这样操作是为了提高 编译器 的效率 , 提高程序执行的效率 , 函数的 形 最终要拷贝到 栈内存...(int array[]) { } int *array void fun(int *array) { } 二、二维数组形退化 ---- 二维数组 作为 函数 , 也会退化为指针 ; 将 二维数组...也是 指针 , 则形为 二级指针 ; 实参为 二维数组 int array[10][20] , 等效的 形为 一级指针 int (*array)[20] ; 二维数组 的 数组的元素 是 一维数组

    2.8K10

    C语言----C语言内存函数

    1.这个函数在遇到\0的时候并不会停下来 2.如果source和destination有任何的重叠,复制的结果都是未定义的 memcpy函数最终返回的是目标空间的起始地址 //函数的一种写法: 这个函数最终返回的是目标空间的起始地址...: //函数的一种写法: //这个函数最终返回的是目标空间的起始地址 void* my_memcpy(void *dest, const void*src, size_t num) { assert...,非要使用,结果就是未定义的 //只负责不重叠的内存 函数的返回值是void*类型的数据 这个memcpy函数有三个数据 2.memmove--内存移动--使用和模拟实现 2.memmove--内存移动...//总之:这个拷贝是分三块区域的,最前面的一块区域满足dest<src //我们只能从前往后进行拷贝,不然会出错误 //而剩下的两块区域可以同时从后往前进行拷贝,那么我们就将这两块区域放在一起 在C语言标准中...,明确规定了memcpy只要能实现不重叠的拷贝就行,重叠的拷贝交给memmove 我们发现vs上面的库函数memcpy函数也能实现重叠内存的拷贝 我们在以后的拷贝中,我们可以用memmove,因为不管是重叠的还是不重叠的都能搞定

    10910

    C语言----函数

    1.函数的概念 函数:founction c语言的程序代码都是函数组成的 c语言中的函数就是一个完成某项特定的任务的一段代码,这段代码有特殊的写法和调用方法 c语言中我们一般见到两种函数: .库函数 ....= a + b; int c = Add(a, b);//使用函数,调用函数,调用函数就跑到1~7行调用函数了,把a传给x,b传给y //输出 printf("%d", c);...参数部分的void表示函数不需要参数 4.形和实参 在函数的使用过程中,把函数分为形和实参 int Add(int x, int y) // 形,形式上的存在 { return x...,实参就写数组名,形也是数组的形式 实参和形的名字是可以一样的 函数在设计的时候,一定要功能单一,不要要过于复杂 数组在传的时候,形的数组和是实参的数组是同一个数组 形如果是一维数组,数组大小可以省略不写...形如果是二维数组,行可以省略,但是列不能省略 //二维数组的案例 void print(int arr[3][5], int r, int c)//这里的3可以省略,但是5不能省略 //这里的r和c

    6110

    C语言函数

    C语⾔中我们⼀般会⻅到两类函数: 库函数 自定义函数 二、库函数 1.标准库和头文件     C语⾔标准中规定了C语⾔的各种语法规则,C语⾔并不提供库函数C语⾔的国际标准ANSI C规定了⼀些常⽤的函数的标准...,因为整型相加还是整型 (2)它的形为两个整型x和y,而在主函数中的a和b则是实参,形和实参可以使用不同的名字 (3)在函数体中,我们借助另一个参数c存放两个整型的和,最后使用return语句将其返回...形式参数只有在函数被调⽤的过程中为了存放实参传递过来的值,才向内存申请空间,这个过程就是形的实例化 3.实参和形的关系     实参和形是有关系的,当没有使用函数时,形式参数并不会在内存中开辟空间...,只有在使用函数时,将实参传递给函数,那么对应的形就会接收实参的值,此时形也会在内存中开辟自己的空间,所以它们的关系可以说是:形是实参在内存中的临时拷贝 五、return语句     在函数的设计中...这⾥我们需要知道数组传的⼏个重点知识: (1)函数的形式参数要和函数的实参个数匹配 (2)函数的实参是数组,形也是可以写成数组形式的 (3)形如果是⼀维数组,数组⼤⼩可以省略不写 (4)形如果是

    10410

    C语言函数

    其实在C语言也引入函数(function)的概念,有些翻译为:子程序,子程序这种翻译更加准确一些。 C语言中的函数就是一个完成某项特定的任务的一小段代码。这段代码是有特殊的写法和调用方法的。...C语言的程序其实是由无数个小的函数组合而成的,也可以说:一个大的计算任务可以分解成若干个较小的函数(对应较小的任务)完成。...同时一个函数如果能完成某项特定任务的话,这个函数也是可以复用的,提升了开发软件的效率。 在C语言中我们一般会见到两类函数: 库函数 自定义函数 2....库函数 2.1 标准库和头文件 C语言标准中规定了C语言的各种语法规则,C语言并不提供库函数C语言的国际标准ANSIC规定了一些常用的函数的标准,被称为标准库,那不同的编译器厂商根据ANSI提供的C语言标准就给出了一系列函数的实现...这⾥我们需要知道数组传的几个重点知识: 函数的形式参数要和函数的实参个数匹配 函数的实参是数组,形也是可以写成数组形式的 形如果是一维数组,数组大小可以省略不写 形如果是二维数组,行可以省略,但是列不能省略

    6910

    C语言——函数

    导读 : 这篇文章主要讲解一下C语言函数的一些基本知识。 前言:函数的概念 C语言中的函数又常常被称为子程序,是用来完成某项特定的工作的一段代码。...从函数的定义角度:我们可以把函数分为库函数和自定义函数 一,库函数: 库函数是由C语言编译系统提供的,已经有一定功能的,我们只需在程序前包含有该函数原型的头文件就可以直接使用这些函数。...("yeah"); // printf就是C语言提供的有打印功能的库函数,不需要我们自己定义 } 寻找C中的库函数及其有关的头文件的网址(C/C++官方的链接): http://zh.cppreference.com...2,实参列表中的参数(即实参)可以是变量,常量和表达式 3,实参之间用逗号隔开 4,在C语言中,出了main函数,其余的函数调用前要有函数声明(原型) 函数声明 ret_type name(形式参数...C语言中的函数之间都是平行的,不分上下级。

    9610

    C语言函数

    一、函数 1、函数的概念 C语言中的函数,准确来说应该叫子程序,与数学中的函数不同,C语言中的函数就是一个完成某项特定任务的一小段代码。...C语言的程序其实是由无数个小的函数组合而成的,也就是说,一个大的计算任务可以分解成若干个小的函数(对应小的任务)完成。...同时一个函数如果能完成某项特定任务的话,这个函数是可以复用的,提升了开发软件的效率。 在C语言函数一般分为两类:库函数和自定义函数。...2、库函数 关于库函数我在这篇文章中已经简单梳理过 —> C语言基础, 还请跳转到这篇文章中,这里就不再赘述。...库函数的使用方法:https://zh.cppreference.com/w/c/header 3、形和实参 关于形和实参我也在下面这篇文章中简单介绍过 —> 指针的简单应用

    10310

    C语言函数

    函数概念 1. C语言中的函数就是:完成某项特定任务的一小段代码。 2. 类比一个小工厂,里面有已经设定好的特定的步骤,就是实现函数功能的过程。 函数分类 库函数 1....实参的内容传递给了形,说明他们之间是有联系的。 2. 但是形和实参其实占用了不同的内存空间。 3. 形是实参的⼀份临时拷贝,调用完函数之后,形所占用的内存被释放。...//第2⾏定义函数的时候,在函数名add后的括号中写的x和y,称为形式参数,简称形。  return 语句  1....函数的实参是数组,那么就有两种形,第一种是以数组的形式来接收,第二种是以指针的形式来接收。(都是传递地址调用) 3. 形接收的数组和实参的数组是同⼀个数组 。...//.c中存放主函数和自定义函数的调用。 //.c中主函数要加上 “.h” 的声明。 例如:写一个加法函数

    4900
    领券