首页
学习
活动
专区
圈层
工具
发布

什么是 C 语言里的 void, void* 和 void**

C 语言里的 void,void* 和 void** 代表着不同的概念,分别涉及数据类型的定义、泛型指针的使用、以及多级指针的复杂性。1. 什么是 void?...在这种情况下,void 是一种标识符,告诉编译器这个函数只执行某种操作,而不需要返回数据。可以类比到现实世界中,这类似于一个公告板功能,它只负责向用户显示消息,但不会收集任何反馈。...void** 是一个指向 void* 类型数据的指针,也就是说,它是指向指针的指针。为了理解 void** 的作用,我们需要进一步理解多级指针的概念,以及在具体编程场景中的应用。...void** 就是这样的地图,提供一种间接查找最终地址的能力。3.2 void** 的应用场景在很多时候,void** 用于需要对指针进行修改的函数中。...总结与对比4.1 void void 表示“无类型”或“无返回值”,可以用于函数的返回类型或参数列表中,表示函数不返回值或不接受参数。它的作用更多是一个标识符,明确函数的功能而非具体的数据操作。

68010

void及void指针含义的深刻解析

void指针使用规范 ①void指针能够指向随意类型的数据,亦就可以用随意数据类型的指针对void指针赋值。...void的作用 ①对函数返回的限定。 ②对函数參数的限定。 当函数不须要返回值时,必须使用void限定。比如: void func(int, int); 当函数不同意接受參数时,必须使用void限定。...2.void的含义 void的字面意思是“无类型”,void*则为“无类型指针”,void*能够指向不论什么类型的数据。...在实际的程序设计中,为迎合 ANSI 标准,并提高程序的可移植性,我们能够这样编写实现相同功能的代码: void * pvoid; (char*)pvoid ++;//ANSI :正确; GNU...规则五void不能代表一个真实的变量   以下代码都企图让void代表一个真实的变量,因此都是错误的代码: void a;//错误 function(void a);//错误 void体现了一种抽象,

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

    Prometheus-Operator:告警认领功能实现

    上篇回顾 上篇文章我们主要是针对告警路由进行了讲解,告警路由使用无疑是非常方便的,但是缺少一些告警处理人相关提醒,所以我们本篇文章讲解一下告警认领的功能实现 prometheus架构图 通过上图我们可以发现...hook,使得我们可以处理Alertmanager发送过来的告警数据,钉钉outgoing机制传递用户ID,使用钉钉dtmd来自动实现回复功能 环境概述 # kubectl get nodes NAME...Running 1 8d prometheus-k8s-1 2/2 Running 1 10m prometheus-operator-c46b8b7c9...common.TPLogger.Error("更新认领人失败", err) return err } common.TPLogger.Info("更新认领人成功") return nil } 这里主要功能为接受钉钉的回调事件...认领后告警恢复 无人认领告警恢复 告警代码领取方式,可以添加下方二维码 总结 告警认领功能到此已经添加完成,当然其中还有一些地方不够完善的,例如告警静默,告警指派、告警升级等功能,如果有需要后期会慢慢完善

    76810

    Prometheus-Operator:告警排班功能实现

    增加该功能的初衷主要是为了方便处理问题,当我们遇到比较严重的问题、或者说需要开发、主管一起进行排查时我们就可以使用该功能,点击后会自动将对应开发、主管拉入群聊中,当问题解决后该群会移除除了群主(建议新增一个账号来作为群主账号...Running 1 8d prometheus-k8s-1 2/2 Running 1 10m prometheus-operator-c46b8b7c9...2 Running 0 8d golang版本:1.17.10 gin版本:1.9.0 gorm版本:1.25.1 快速开始 创建日程 使用钉钉APP进行创建 这里的需要填写的内容就不做过多的解释了...responseGetCalendarOfUser.Events[0].Summary return nil, summaryName } 触发告警 看下图,可以看出已告警已触发了 调班 调班后再次触发告警 总结 告警排班功能到此已经添加完成了...,主要是为了解决有些小伙伴公司没有内部的排班系统,所以这次利用钉钉的日程功能来实现一个灵活的排班机制。

    50841

    void * 指针的作用_C

    void* 指针在C和C++编程中是一个通用的、无类型的指针。 它可以被赋值为任何类型数据的地址,但是在解引用它之前,通常需要将其强制转换为特定的类型指针。...以下是void*指针的一些主要用途: 1.泛型编程:当你不确定要处理的数据类型时,void*非常有用。 例如,当编写一个通用的内存分配或释放函数时,这个函数可能不知道它正在处理的数据类型。...在这种情况下,你可以使用void*指针来传递任何类型的地址。...2.作为回调函数的参数:当回调函数需要接受不确定类型的参数时,可以使用void*。...需要注意的是,虽然void*提供了很大的灵活性,但它也带来了类型安全的问题。 当你解引用一个void*指针时,你必须确保你知道它实际上指向的是什么类型的数据,并将其正确地转换为该类型的指针。

    16410

    C语言 — void的用法解析

    常用在程序中对定义函数的参数类型、返回值、函数中指针类型进行声明。 二、用法 首先应该注意一点的是void类型是不同于其他常见类型的,即void 类型不能够用来申明变量和常量。...总的来说,void应用最广泛的就是跟指针结合,而void和指针的结合也大大扩展了指针的可能性。...void * /*无类型指针,也称为空指针,可以指向任何类型的数据 *注意一点:当我们需要使用void 类型的的指针变量去指向某一类型的变量的时候,必须要对其进行类型转换 */ 我们在定义一个指针变量的时候第一件事就是指定我们指针变量所指向的变量的类型...当然了,我们也可以进行强制类型转换,即使用括号进行类型转换,比如: int *p1; void *p2; p1 = (int *)p2; 从上面的例子可以看出,当我使用void去修饰指针的时候,这种通用类型的指针可以很方便的和其他类型的指针之间进行相关转换...void另一个重要的应用则就是跟函数进行结合主要有以下两个方面的应用。

    2.6K20

    C语言中的void的理解

    大家好,又见面了,我是你们的朋友全栈君。1 初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。...本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧。...2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。...不过,即使void a的编译不会出错,它也没有任何实际意义。 void真正发挥的作用在于: (1) 对函数返回的限定; (2) 对函数参数的限定。...void的字面意思是”无类型”,void *则为”无类型指针”,void *可以指向任何类型的数据。 在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。

    1.8K20

    void*到底是怎样的存在?

    来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 说到C就不得不提指针,而一提到指针,有一个是比较特殊的,那就是void*。 void*到底是怎样的存在?...指针类型的含义 在说明void*之前,先了解一下普通指针类型的含义。...因为对于这种通用型接口,你不知道用户的数据类型是什么,但是你必须能够处理用户的各种类型数据,因而会使用void*。void*能包容地接受各种类型的指针。...注意 使用void*需要特别注意的是,你必须清楚原始传入的是什么类型,然后转换成对应类型。...void *)); 它的第三个参数就是比较函数,它接受的参数都是const void*,如果你的比较对象是一个结构体类型,那么你自己在实现compar函数的时候,也必须是转换为该结构体类型使用。

    72110

    tf-operator 的测试

    平台之前提供过一些大规模机器学习的模块给算法同学使用,效果不错,但是因为交互以及和 K8S 的集成问题,还有就是人力问题,没有做的很好,最近调研了一些 tf-operator,准备底层进行整合,给用户提供更好的机器学习训练的体验...关于 tf-operator,可以参考官网和 Github 仓库,简单理解,tf-operator 就是让用户在 K8S 集群上部署训练任务更加方便和简单。...2 Setups 因为 Kubeflow 安利:在 Kubernetes 上进行机器学习 内容已经比较老了,Kubeflow 有了一些模块的调整,而且官网的部署介绍是基于整个所有 component 的...,但是我只想跑一个 tf-operator 的测试程序,所以从官网提供的部署方法里,抠一些脚本出来,单独部署一个 tf-opertor。...的程序,就可以部署好 tf-operator 了。

    1.4K20

    rockermq-operator的问题查找

    因为公司内有使用 RocketMQ,在做容器化的时候,在 Github 社区了找到了一个已经不太维护的项目 rocketmq-operator, 当然也在 Dockerhub 找到了 apacherocketmq.../rocketmq-operator 这个镜像,但是在对比了一下 Github 仓库的 tag 和 Dockerhub 上的这个 0.3.0-snapshot 的镜像,发现 Github 上还没有打标签...正好在测试 Operator 的时候,同事反馈遇到扩容 broker 有问题,大概翻到了这个 issue, 细看一下,应该是 postStart 那个脚本有问题,然后先去定位一下 Operator 的代码...然后再看看 RocketMQ 4.5 的代码,很明显,读取一个不是 Json 格式的文件,那肯定有问题的。...改Operator的代码,防止写入nil 改RocketMQ的代码,把nil排除 不管从哪个角度看,都是改 Operator 是更优的方法,至于怎么改,应该不用多说了,就是提前把 nil 获取,替换掉或者直接

    34931
    领券