C语言--void指针参数

C语言中指针传参 目录C语言中指针传参一、如何改变参数的值1、常见的错误写法:2、解决办法使用指针二、与return进行比较1、使用return返回值:2、使用指针改变多个参数的值三、传入的参数是指针如何处理?使用指针的指针 C语言中指针传参 一、如何改变参数的值 1、常见的错误写法: 由于变量会随着栈的退出而销毁,所以下面的函数无法改变a的值。 #include<stdio.h> void f(int b){ //参数b初始化为1 b=3;//改变b的值为3 }//随着函数的结束,变量b被销毁,a 阅读详情

C语言–函数的传参(pointer)

c语言中有一种通用指针,void * 类型指针,该指针在C中很常见,通常用于针对不同类型参数的函数。
例如,以下函数将对任何类型的数据清零。

void test(void *data, size_t n)
{
    memset(data, 0x00, n);
}

可以将任何类型的指针传递给test函数而不需要cast。

    int ax = 10;
    test(&ax, sizeof(ax));
    printf("ax = %d\n", ax);
    void *ptr = &ax;
    return 0;

但是, void** 是另一种情况。

void changeptr(void **ptr)
{
    *ptr = NULL;
}
    int ax = 10;
    void *ptr = &ax;
    int *iptr = ptr;
    printf("%d\n", *iptr);
    test(&ax, sizeof(ax)); 
    changeptr(&iptr);
    printf("ax = %d\n", ax);
    return 0;
warning: incompatible pointer types pass 'int **' to parameter of type 'void **'
gcc testvoid.c -o testvoid
testvoid.c: In function ‘main’:
testvoid.c:19:15: warning: passing argument 1 of ‘changeptr’ from incompatible pointer type [-Wincompatible-pointer-types]
     changeptr(&iptr);
                    ^
testvoid.c:10:6: note: expected ‘void **’ but argument is of type ‘int **’
void changeptr(void **ptr)

因此,对于void ** 参数必须进行强制类型转换

changeptr((void **)&iptr);

A cast is necessary here because, although a void pointer is compatible with any other type of pointer in C, a pointer to a void pointer is not.

【C语言】结构体变量数据通过 void* 传入到函数中 代码】【C语言】结构体变量数据通过 void* 传入到函数中。 阅读详情

相关推荐

c语言泛型指针void *作为入参的用法

1,在函数的参数类型不确认的时候,我们是怎么做呢,是分情况处理吗,我觉得我们可以用void * 泛型指针来处理: (1)整形数据: int get_port_value(void* pValue) { int test_num = 10; if( NULL == pValue) { return -1; } (int)(*pValue) = test_num; return 0; } int main() { int test

陌上花开缓缓归以的博客 2718

c语言--指针作为函数参数传递

本文主要讲解指针作为函数参数传递时,什么可以以及为什么可以改变传过去的值

none 7984

【Elasticsearch专栏 16】深入探索:Elasticsearch的Master选举机制及其影响因素分析

Elasticsearch的Master选举机制是其分布式架构的基石,确保集群高可用性和数据一致性。通过多数派协议,节点间交换信息并投票选举Master,以维护集群状态和处理请求。该机制自动处理故障转移,保障服务连续性。

weixin_40736233的博客 1775

void参数

序言 void 参数是指将参数已void形式声明。 void func(void); 代码 void func(void) c语言中,如果函数参数为void来限定此函数不传递任何函数,就是说函数声明原型签名信息不包含参数信息时,此默认为空表示可以传递任何参数, func(1); //没问题 c++中,C++标准规定如果没有对参数列表进行定义那么就表示函数不能传递任何参数。 func(1) ...

liunanya的博客 2676

数据结构之栈(Stack)的实现详解

堆栈是一种线性数据结构,其插入新元素和删除现有元素都发生在堆栈的顶部。栈(Stack)按照"后进先出"(Last-In-First-Out,LIFO)的原则存储和访问数据。栈类似于现实生活中的堆叠物体,比如一摞书或者一堆盘子。

swadian2008的博客 3813

MuJoCo 动捕接口 Mocap 直接操控机械臂(附代码)

动作捕捉(Motion Capture,简称 Mocap)是一种记录并处理人或物体动作的技术,在影视、游戏、机器人等领域应用广泛。通过上下左右以及alt_l,alt_r可以控制hand这个hody跟着mocap进行同步,这里将quat固定为Z朝下。首先在 scene.xml 中修改添加 mocap 和 equality。下面介绍如何配置 Mocap 以及使用按键进行末端控制。控制核心代码,通过按键控制mocap的pos和quat。

darcsdn 879

C语言中的void和void指针-void*,及void指针做函数参数。

实例: #include <stdio.h> #include <stdlib.h> void print(void * node) { printf("%d\n", *(int *)node); //加星号报错,不加不报错,但是结果不对。 //必须要转换成相应类型才能对其...

Hello,小高同学 1万+

【CUT&TAG分析-加了spike in的样品】

使用 Bowtie2 或 Subread (subjunc) 来构建大肠杆菌的索引。bowtie2比对时设置参数–local, 局部比对。

weixin_57975238的博客 1400

c语言中能用void做参数吗,C语言中的void和void指针-void*,及void指针做函数参数。...

实例:#include #include void print(void * node){printf("%d\n", *(int *)node); //加星号报错,不加不报错,但是结果不对。//必须要转换成相应类型才能对其操作}void main(){int a = 10;print(&a);system("pause");}void 关键字当函数返回值为空时,可以使用void。void...

weixin_28856717的博客 1924

将雷达连接到树莓派的串口

dev/ttyAMA0 是树莓派的主要 UART(用于 GPIO 引脚 8 (TXD) 和 10 (RXD))。通常,树莓派使用 GPIO 引脚 8 (TXD) 和 10 (RXD) 进行串口通信。树莓派上通常有两个串口:/dev/ttyS0 和 /dev/ttyAMA0。你需要确认雷达的 TX 和 RX 引脚,并与树莓派的对应引脚连接。VCC(电源)连接到树莓派的 3.3V 或 5V(根据雷达的要求)MR(Receive)连接到树莓派的 GPIO 8 (TXD)GND(地)连接到树莓派的 GND。

qq_45943628的博客 1467

PyTorch视觉项目实战:从数据加载到模型部署

PyTorch视觉项目实战:从数据加载到模型部署 ,人工智能,计算机视觉,大模型,AI,随着深度学习在计算机视觉领域的飞速发展,PyTorch 凭借其简洁的代码风格、动态计算图特性以及强大的社区支持,成为众多开发者和研究人员的首选框架。从数据加载、模型构建与训练,到最终的模型部署,PyTorch 提供了一套完整且灵活的解决方案。本文将通过实际项目案例,详细阐述基于 PyTorch 的视觉项目全流程,结合丰富的代码示例和概念解析,帮助读者掌握从项目起步到落地的关键技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

判断void*参数类型_C/C++编程笔记:C语言精华解析之void *指针,指针中的万能指针...

什么是万能指针?万能指针其实就是void *类型的指针,而void *指针一般被称为通用指针或叫泛指针。它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,所指向的对象不属于任何类型。 因为void指针不属于任何类型,不可以对其进行算术运算,比如自增,编译器不知道其自增需要增加多少。而对于char *型指针,自增一定是指针指向的地址加1,int*型指针自增,则偏移4。这个在指针的运算中...

weixin_39757893的博客 999

mabl:AI原生测试自动化平台的基础使用

mabl是一个基于人工智能和机器学习的云原生测试自动化平台。它通过使用先进的技术,如机器学习,自动创建和执行测试,自动分析测试结果,并根据需求的变化自动适配和维护测试。这样的自动化过程极大地提高了软件测试的效率和准确性。mabl的口号是 “You write code, mabl tests”,意味着开发者只需关注编写代码,而测试工作则可以交给mabl来完成。mabl的平台支持多种测试类型,包括 Web、App、Api、可访问性和性能测试,使得团队能够更快速、更有信心地发布软件。

blues_C的博客 3661

C语言基础第17天:二级指针、main函数参数、常量指针和void指针的使用

本文摘要:C语言指针进阶应用指南重点解析了二级指针、main函数参数、常量指针和void指针的使用。主要内容包括:1. 二级指针的定义与解引用方法,以及与指针数组的等效性;2. main函数的多种定义格式和参数(argc,argv)的使用;3. 常量指针与指针常量的区别与应用场景;4. void*万能指针的特性及类型转换注意事项;5. 野指针的危害及防范措施。文章通过具体代码示例,详细说明了各类指针的操作技巧和适用场景,为C语言开发者提供了指针高级应用的实用参考。

acsdnrb的博客 859

一个中科大差生的8年程序员工作总结

今年终于从大菊花厂离职了,离职前收入大概60w不到吧,在某乎属于比较差的,今天终于有空写一下自己的职场故事,也算是给自己近8年的程序员工作做个总结复盘。近8年有些事情做对了,也有更多事情做错了,在这里记录一下,希望能够给后人一些帮助吧,也欢迎私信交流。文笔不好,见谅,有些细节记不清了,如果有出入,就当是我编的这个故事吧。 PS:有几个问题先在这里解释一下,评论就不一一回复了 1、关于差生,我本人在科大时确实成绩偏下,差生主要讲这一点,没其他意思。 2、因为买房是我人生中的大事,我认为需要记录和总结一下

陈小房的自我修炼 5万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

详解 C 语言空类型void:在指针、函数返回值、参数列表中的用法边界

void。

hhchdjkjko的博客 456

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【C 语言】数据类型本质 ( void 关键字作用 | 数据类型封装 | 作为 参数 或 返回值 代表无 | void* 指针赋值与被赋值 | void 类型变量不存在 )

一、数据类型封装、 二、作为 参数 或 返回值 代表无、 三、void* 指针赋值与被赋值、 四、void 类型变量不存在、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1465

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

c语言void*指针,C语言void指针

C语言void指针教程在 void 的意思就是 “无类型”,void 指针则为 “无类型指针”,void 指针可以指向void指针使用在 C 语言中在任何时候都可以用 void 类型的指针来代替其他类型的指针,void 指针可以指向任何数据类型的变量。如果要通过 void 指针去获取它所指向的变量值时候,需要先将 void 指针强制类型转换成和变量名类型相匹配的数据类型指针后再进行操作。任何类型的...

weixin_27743991的博客 2818

c语言void形式的函数,C语言的void类型

void类型void的字面意思是“无类型”,void * 则为无类型指针,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用。void a;这行语句编译时会出错,提示"illegal use of type 'void'"。不过,即使void a的编译不会出错,它也没有任何实际意义。void真正发挥作用在于:1.对函数返回的限定:如果函数没有返回值,那么应声明为void类...

weixin_31090341的博客 5115

c语言 void指针作为函数参数时如何判断传入的参数的具体类型

方法1: 自己定义一些数据结构,数据结构的第一个字段都是一个int整数,表明当前结构是什么类型。在函数中将void 强制转换为int,取出那个标志,再根据标志指示的类型来把void *进一步转换为相应的结构的指针。 struct my_struct { int a; int b; }; int main () { struct my_struct *p = malloc(sizeof(struct my_struct)); p->a = 1; p->b = 2; ...

Peace 1783

C语言中void的高级应用

C语言中的void 高级运用

wwwqqq2014的博客 1万+

c语言中void函数,c语言中void的用法

c语言中void的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中void的用法的用法,希望对你们有用。c语言中void的用法的用法如下:void指针是什么?void指针一般被称为通用指针或泛指针,它是C关于“纯粹地址(raw address)”的一种约定。void指针指向某个对象,但该对象不属于任何类型。请看下例:int *ip;void *p;在上例中,ip指向一个整型值,而...

weixin_30604459的博客 4327

C语言中void*详解及应用

void在英文中作为名词的解释为“空虚;空间;空隙”;而在C语言中,void被翻译为“无类型”,相应的void *为“无类型指针”。void似乎只有“注释”和限制程序的作用,当然,这里的“注释”不是为我们人提供注释,而是为编译器提供一种所谓的注释。 本文地址:http://www.cnblogs.com/archimedes/p/c-void-point.html,转载请注明源地址。 void的作...

houzhizhen的专栏 2万+

Linux C语言:多级指针(void指针和const)

1)其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数。2)argv参数是字符串指针数组,其各元素值为命令行中各字符串的首地址。对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算。定义另一个指针变量pps,并且把指针数组的首地址赋予指针pps。3)指针数组的长度即为参数个数argc。有一个一维字符指针数组ps[5]

Liu1013216383的博客 1312

C语言中的void和void指针-void*

void 关键字 void指针的作用 使用方式 void指针与函数 void 关键字 当函数返回值为空时,可以使用void。 void empty(int a); 当函数参数列表为空时,可以使用void。 void empty(void); void指针的作用 void指针:void * 可以用其指代任何类型的指针。 但不能用void指针...

打渔还是晒网 —— stone 4811

C语言void及void指针深层探索

C语言void及void指针深层探索

FF的专栏 627
上一篇: C语言--指针与数组
下一篇: C 语言--sizeof与typedef
AdmireLinux
博客等级 码龄11年 6粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值