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

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

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

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

    【Python】类型注解 ④ ( 函数类型注解 | 函数类型注解语法 | 函数返回值类型注解 )

    一、函数类型注解 1、函数中由于类型缺省导致的提示问题 由于定义 函数 时 , 没有为 函数 设置 类型注解 , 编写函数时 , PyCharm 工具无法提示没有类型 : 在定义函数时...; 2、函数类型注解语法 函数类型注解语法 : def 函数名称(名称1: 类型1, 名称2: 类型2, ... , 名称n: 类型n) pass 函数类型注解...() print(data) 为 fun 函数 data , 设置 类型注解 , 设置该类型为 list 容器类型 ; 在定义 函数 时 , 在函数体内部调用 data 的 列表方法时...名称 data , 又包含类型 list , 而不是之前只有 data 名提示 ; 3、代码示例 - 函数类型注解 在下面的代码中 , 定义了 add 函数 , 为该函数的两个 x...---- 1、函数返回值类型注解语法 函数返回值类型注解语法 : def 函数名称(列表) -> 返回值类型: pass 函数 返回值 类型注解 , 在 函数列表后 , 使用 -> 指定 返回值类型

    30610

    【JavaScript】函数 ③ ( 与 实参 匹配问题 | 实参个数 = 个数 | 实参个数 > 个数 | 实参个数 < 个数 )

    一、JavaScript 函数 与 实参 匹配问题 1、函数参与实参不匹配问题 在 其它语言 中 , 如 Java 语言 , 要求 函数的 形式参数 和 实际 参数 必须一一对应匹配 , 否则就会报错...; // 定义函数 有 2 个 function add(num1, num2) { console.log(num1 + num2);..., 有 2 个 , 传入 3 个实参 , 此时函数只接受 前 2 个实参 , 第 3 个实参不接收 , 也就不参与函数运算 ; // 定义函数 有 2 个 function...函数中 , 定义了 2 个 num1和 num2 , 但是 调用函数时 , 只传入了 1 个实参 6 , 函数 将该实参 6 传递给 num1 , num2 没有对应的值 , 就取默认值 undefined...// 定义函数 有 2 个 function add(num1, num2) { console.log("接收到实参 num1 = "

    11510

    【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] , 等效的 为 一级指针 int *array ; 一维数组 , 直接退化为 指向 数组元素的指针 , 数组元素是 普通类型 , 指向普通类型的指针

    2.8K10

    python之函数的实参和

    下面我们来介绍一下python的函数实参和相关内容。...---- 二、实参和   定义函数时,圆括号内是使用逗号分隔的形式参数列表(简称),调用函数时向其传递实参,根据不同的参数类型,将实参的值或引用传递给。...1.传值   当参数类型为固定数据类型(如整数、浮点数、字符串、元组等)时,在函数内部直接修改的值不会影响实参。   例:阅读以下程序,分析输出结果。...2.传引用   但当参数类型为可变数据类型(如列表、字典、集合等)时,在函数内部使用下标或其他方式为其增加、删除元素或修改元素值时,修改后的结果是可以反映到函数之外的,即实参也会得到相应的修改。   ...---- 三、参考 1、廖雪峰的官网 2、python官网 3、Python编程案例教程 ---- 四、总结   以上就是就是关于Python的函数实参和相关知识,可以参考一下,觉得不错的话,欢迎点赞

    95120

    【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 返回值 | 函数返回值 | 函数处理 | 指针判空 )

    ; 字符串翻转模型 业务函数 要点 : 返回值 : 函数的返回值 , 一般使用 函数 间接赋值 进行返回 ; 下面的代码中 char *str 是返回值 ; int inverse(char *...str) 函数返回值 : 函数的返回值 , 反映的是函数的执行结果状态 , 返回 0 执行成功 , 返回 -1 执行失败 ; 函数处理 : 在 函数中 , 如果涉及到修改 指针变量 , 一般不直接使用..., 创建一个临时局部变量 , 接收 , 然后再执行相关操作 ; // 创建临时变量接收 函数 , 不要直接改变形函数指向 char *str_tmp = str; 指针判空...: 函数的第一项任务就是 判定 指针是否合法 , 如果任何一个指针为空 , 直接返回 -1 ; // 判断传入的字符串指针是否为空 if(str_tmp == NULL)...include #include /* * 将参数字符串翻转 */ int inverse(char *str) { // 创建临时变量接收 函数

    93110

    python函数——中的:*args和**kwargs

    多个实参,放到一个元组里面,以*开头,可以传多个参数;**是中按照关键字传值把多余的传值以字典的方式呈现 *args:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元祖的方式呈现)...2,3,4,5都给了args,y按照默认参数依旧为1  执行结果是: 1 2 3 1 (2, 3, 4, 5) 1 其中关于*,可以从2个角度来看(需要拆分来看): 1、从的角度来看...———————————————————————————————————————————————————————————————————————————————————— **kwargs:(表示的就是中按照关键字传值把多余的传值以字典的方式呈现...以字典的方式给了kwargs 执行结果是: 1 2 3 1 1 {'a': 2, 'b': 3, 'c': 4} 其中关于**,可以从2个角度来看(需要拆分来看): 1、从的角度来看

    1.1K10

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

    声明格式为: *类型标识符 函数名(参数表) 这似乎并不难理解,再进一步描述一下。...先看看下面这个函数声明: int fun(int x,int y); 这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值。...其返回值是一个 int 类型的指针,是一个地址。 这样描述应该很容易理解了,所谓的指针函数也没什么特别的,和普通函数对比不过就是其返回了一个指针(即地址值)而已。...,需要一个同类型的指针来接收其函数的返回值。...不过也可以将其返回值定义为 void*类型,在调用的时候强制转换返回值为自己想要的类型,如下: //指针函数 Data *f(int a,int b){ Data * data = new

    62920

    【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 指针间接赋值 | 返回值状态 | 指针处理 | 指针判空 | 返回值 )

    自定义的 业务子函数 与 主函数 main() ; 定义的接口如下 : 要点 1 指针间接赋值 : 主要是获取子串大小 , 通过 int *sub_count 参数的 间接赋值 , 实现函数结果返回...: 指针处理 : 定义 局部 临时 指针变量 , 接收 函数参变量 , 尽量不修改 函数 的值 ; 指针判空 : 凡是传入的指针 , 一律判定指针是否合法 ; 返回值处理 : 返回值不要直接修改... 的值 , 使用指针变量接收 函数 char *main_str_tmp = main_str; char *sub_str_tmp = sub_str; // 返回值临时值..., 先不要修改 sub_count 指针指向的值 , 最后计算完毕后再修改 int sub_count_tmp = 0; // 判定指针是否合法 // 如果指针为 NULL... 的值 , 使用指针变量接收 函数 char *main_str_tmp = main_str; char *sub_str_tmp = sub_str; // 返回值临时值

    3.2K10

    -实参概念剖析

    实参: 可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给。 因此应预先用赋值,输入等办法使实参获得确定值。... :即函数的自变量,其初值来源于函数的调用。只有在程序执行过程中调用了函数才有可能得到具体的值,并参与运算求得函数值。...和实参的区别: 1、英文名字不同:是parameter,实参是argument。 2、本质不同:的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。...站在函数里面,你能看到的函数参数就是--。 //内部有效 2 .站在函数外面,你调用函数输入的参数就是--实参。...比如你定义一个函数void add(int a, int b),这里的a和b就是。 2. 当你进行函数调用的时候,add(1, 2),这里的1和2就是实参。

    1.4K20

    SpringMVC通过实体类型获取请求参数(一)

    在SpringMVC中,获取请求参数的方式有很多种,除了之前介绍的@RequestParam、@PathVariable、@RequestHeader和@CookieValue注解,还可以使用实体类型获取请求参数...实体类型的定义实体类型是指在Controller方法中定义一个实体类的对象作为参数,通过该对象来接收请求参数。...实体类型的用法使用实体类型可以将请求参数封装到一个实体对象中,从而简化代码,并且可以避免在方法中使用@RequestParam注解声明大量的参数。...实体类型的注意事项在使用实体类型时,需要注意以下几点:实体类的属性名称必须与请求参数的名称一致。...实体类的属性类型必须与请求参数的类型一致,或者可以自动转换。例如,在上面的例子中,请求参数的类型为String,因此实体类的属性类型也必须为String,否则会抛出类型转换异常。

    64320

    【C 语言】C 项目开发代码规范 ( 参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收 | 函数返回值 | 作返回值 | 返回值处理 )

    : 函数入口处 , 判断函数是否为空 , 如果为空 , 直接返回 ; int get_value(char *key_value, char *key, char *value, int *value_len...) { // 任何函数调用前 , 先判定函数正确性 if(key_value == NULL || key == NULL || value == NULL || value_len...) 博客 , 该博客中就使用了全局变量存放函数结果 , 不支持多线程访问 ; 函数中使用局部变量接收 : 函数中的指针变量 , 不要直接使用 , 如果涉及到修改指针指向的操作 , 建议 创建 函数...函数 的值 , 使用指针变量接收 函数 char *main_str_tmp = main_str; char *sub_str_tmp = sub_str; } 函数返回值...: 一般返回 int 值 , 用于 标记函数执行是否成功 , 如果失败 , 返回错误码 ; 作返回值 : 函数的实际返回值 , 都是通过 函数指针 , 对 指针 进行 间接赋值 完成 ;

    1.5K20
    领券