二甘醇胺对人体有什么危害? 二甘醇msds
2023-11-30
很多朋友对void指针占几个字节,什么是void指针不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。
在C语言中,*类型是指针类型,如int *p、double q。虽然它们是不同的指针,但它们的大小是相同的sizeof(p)==sizeof(q) 因为它们都是相同的类型。 C语言是强类型语言,类型之间的区分非常严格。不同的类型占用不同的空间,并且有不同的地址偏移量;
|基本了解
void 可以指向任何类型的地址,但类型指针不能指向void 的地址。 void* 指针在强制类型转换后只能取正常值。 void*指针变量可以像普通指针一样初始化为等于0或NULL,表示一个当void*指针用作函数的输入和输出时,表示它可以接受任何类型的输入指针和输出任何类型的指针#include 'stdio.h'void *test(void *buff){ return buff;}int main (){ int nums[]={3, 5, 6, 7, 9}; //初始化指针void *p1=NULL; p1=数字; //打印地址printf('%d\\n', p1) ; //获取值(错误报告) //printf('%d\\n', *p1); //获取值(正常) printf('%d\\n', *(int *)p1); //地址偏移量(警告) //printf('%d\\n', ++p1); //地址偏移(正常) int *p2=(int *)p1; printf('%d\\n' ', p2++);}|典型应用
void*类型指针实际上是一种过渡指针状态。编写框架时输入不确定的情况下可以使用。有两种典型应用:
函数传递参数时类型不确定,或者需要支持多种类型的参数。
void function(int dataType, void* data) { //根据dataType的不同值进行不同的转换switch (dataType) { case 0: int* a=(int*)data;情况1: char* a=(char *)data; }}当函数的返回值不考虑类型而是关心大小时
void * memcpy(void *dest, const void *src, size_t len);void * memset (void * buffer, int c, size_t num);|函数指针
当你第一次看到下面这个函数时,你有什么感想?有没有一种既熟悉又陌生的感觉:
typedef void (*fun)(void *data1);看下面的用法:
#include 'stdio.h'//定义一个函数类型typedef void (*fun)(void *data1);//实例化一个函数变量fun test;//定义一个回调函数void callBack(void *p1){ printf( '%d\\n', *(int *)p1);}int main(){ int a=10;测试=回调;测试(a);}--结束--
以上知识分享希望能够帮助到大家!
版权声明:本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们
推荐阅读
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
2023-11-30
栏目热点
二甘醇胺对人体有什么危害? 二甘醇msds
LilyGoT手表键盘C3迷你电脑套件
索泰ZBOXEdgeCI342迷你电脑正式上市
谷歌在最新的视频预告片中展示了PixelWatch的独特设计
三星与设计师Juun.J合作推出限量版可折叠产品和配件
从2023年起Fitbit设备将需要Google帐户
TOKKCAMC2+智能WiFi独立日 夜视摄像头
三星正在与全球时尚品牌JUUN.J合作
OnePlusNordWatch的颜色选项通过泄露的渲染揭示
就在第一款Nothing手机发布之前一种新的TWS芽设计浮出水面