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 *作为入参的用法 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 阅读详情

相关推荐

【C语言】结构体变量数据通过 void* 传入到函数中

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

Fanjufei的博客 1813

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

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

none 7984

保姆级避坑指南:在Ubuntu 22.04上从零编译Autoware.universe(含ROS2 Humble和CUDA配置)

本文提供了一份详细的Autoware.universe编译指南,涵盖Ubuntu 22.04系统优化、ROS2 Humble安装避坑、CUDA配置及Demo运行技巧。通过分步操作和实战经验,帮助开发者高效完成环境搭建,避免常见错误,提升自动驾驶开发效率。

weixin_30642561的博客 351

void参数

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

liunanya的博客 2676

Paraview:Python Calculator Filter

python calculator过滤器 from paraview.simple import * connection = servermanager.Connect('localhost',11111) er = servermanager.sources.EnSightreader(CaseFileName='/.../data.case') er.PointArrays = ['x_velocity','1','y_velocity','1','z_velocity','1','cp','1']

haimianjie2012的专栏 3496

RcisTarget实战:从差异基因到转录因子调控网络的完整分析流程(附代码)

本文详细介绍了RcisTarget工具在转录因子调控网络分析中的完整流程,从差异基因到motif富集分析,再到结果可视化与生物学解读。通过实战代码演示,帮助研究者掌握这一强大的R包应用,揭示基因表达背后的调控机制,特别适用于基因组学和生物信息学研究。

weixin_29214199的博客 228

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

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

Hello,小高同学 1万+

Veritas NetBackup8.1.1安装

1.在服务器上运行Browser.exe 2.选中安装,点击"NetBackup Server Software Installation" 3.提示一个”UAC模式”,我们确定忽略它 4.下一步 5.接受授权,下一步 6.自定义安装 7.输入Key,并点击”netBackup Master Server” 8.自定义路径,下一步 9.默认端口,下一步 10.创建内置账户 创建本地用户帐户: C:\>net user nbwebsvc <StrongPassword> /

万物皆可学 2万+

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

使用 Simulink 和 Simscape Electrical 工具箱设计一个 Buck 转换器系统

Buck 转换器(降压转换器)是一种常用的 DC-DC 转换器,用于将较高的输入电压转换为较低的输出电压。为了评估其抗干扰能力,我们可以在模型中引入不同的干扰源,并观察系统的响应情况。电网电压波动:输入电压的变化。负载突变:负载电阻或电感的变化。电磁干扰:高频噪声或脉冲干扰。通过模拟这些干扰,我们可以分析系统的动态响应特性,并采取相应的措施来提高系统的抗干扰能力。

xiaoheshang_123的博客 378

【局部规划模块曲线算法】曲线平滑介绍

本文先对轨迹平滑问题做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容(1)适合给移动机器人运动的路径【满足运动学,高阶平滑】(2)高阶的运动学不能够突变的【至少三阶的加速度不能突变,最好四阶的jerk和五阶的snap也不能突变】(3)在转弯的地方不会停下来(4)加减速均衡,节省能量(5)节省时间的。

qq_35635374的博客 5718

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

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

weixin_39757893的博客 999

OceanBase数据库LSM-Tree存储引擎深度解析:合并写入与压缩优化策略

OceanBase数据库采用创新的LSM-Tree架构设计,通过"基线-增量"分离存储实现高性能。内存中的MemTable处理写入,磁盘上的SSTable存储有序数据,利用多级缓存加速读取。写入时先写日志再更新内存,合并操作将增量数据整合为基线数据以优化查询性能。相比传统B+树引擎,OceanBase在写入吞吐、压缩效率和存储成本方面优势显著,特别适合写入密集型场景。合并操作作为核心机制,通过多种触发方式和执行策略平衡性能与资源消耗。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1342

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

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

acsdnrb的博客 859

Android 13.0 framework层系统手势增加上滑手势home事件功能(相当于Home键)

在13.0的定制化开发系统手势功能的时候,客户需求要求在上滑手势的时候,在底部上滑时候进入系统桌面,也就是增加 home键功能,所以就需要分析相关的系统手势上滑事件,然后添加home事件这样 就可以实现这个功能了

安卓兼职framework和app工程师的博客 1133

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

void。

hhchdjkjko的博客 456

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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、付费专栏及课程。

余额充值