搜索
bottom↓
回复: 14

void *指针可以赋值给其他指针类型?

[复制链接]

出0入0汤圆

发表于 2019-9-30 16:27:42 | 显示全部楼层 |阅读模式
今天发现这个奇怪是事情,在mdk474中,void *指针可以给其他类型赋值,不生成哪怕是警告?

我记得反过来是可以的,怎么现在两边都可以了呢

出0入0汤圆

发表于 2019-9-30 17:34:19 | 显示全部楼层
void指针可以赋值给其他指针 其他指针可以通过函数调用方式传给void指针 我是这么理解的

出0入93汤圆

发表于 2019-9-30 17:46:32 | 显示全部楼层
C语言类型还是太弱了,很多情况下胡乱转换都可以通过。
C++类型检查就强得过分了,而且不是所有指针都能转成void *。

出0入0汤圆

发表于 2019-9-30 18:01:50 来自手机 | 显示全部楼层
你用stmcube生成个虚拟串口,使用c++编译一下,一大堆错误,好奇st公司没测试过的吗

出0入0汤圆

 楼主| 发表于 2019-9-30 20:23:21 | 显示全部楼层
takashiki 发表于 2019-9-30 17:46
C语言类型还是太弱了,很多情况下胡乱转换都可以通过。
C++类型检查就强得过分了,而且不是所有指针都能转 ...

我奇怪我怎么会有原来的想法

出10入0汤圆

发表于 2019-9-30 20:28:36 | 显示全部楼层
c语言都可以,c++把void*转成其他指针要强转。

出0入0汤圆

发表于 2019-9-30 21:40:06 | 显示全部楼层
void * 本来就是预留给,不知道类型指针用的。 这也是C灵活的地方。

出0入0汤圆

发表于 2019-10-1 07:35:37 来自手机 | 显示全部楼层
这事好事…也是坏事…

出0入0汤圆

发表于 2019-10-21 11:17:26 | 显示全部楼层
本帖最后由 Alimy 于 2019-10-21 11:22 编辑

在统一编址过的CPU里面是可以用void* 来表示通用数据指针。
当不熟悉具体环境时,函数指针通常不用void*来通用表示.



举个例子:
在51单片机中,存在几种地址结构且没有使用同一套地址,所以数据指针也分为了指向 data code xdata 等几种类型 的。
sizeof(data char*) 甚至等于1
sizeof(xdata char*) 貌似等于2

没特意加限定貌似是3
sizeof(char*) == 3

如果sizeof(void*) == 3 的话,应该可以用void*来代替,但如果到底指向那个区没有一致,取的值当然是不对的。

出0入0汤圆

发表于 2019-10-21 12:30:39 | 显示全部楼层
指针只是地址,都可以强制转换的,c语言不管你为啥转换。

出0入0汤圆

发表于 2019-10-21 12:58:27 | 显示全部楼层
给不给警告要看编译器和C语言规范版本,比如C99和非C99一些地方就不一样。keil的警告属于偏少的,IAR给的警告就比较多。

出0入0汤圆

发表于 2019-10-21 17:28:46 | 显示全部楼层
myxiaonia 发表于 2019-9-30 20:23
我奇怪我怎么会有原来的想法

我和你一样,以前也是这么认为,也是最近发现可以互转

出0入0汤圆

发表于 2019-10-21 20:49:32 | 显示全部楼层
11楼说的对,有没有警告看编译器和你的设置,也许是你把警告关掉了
我一般都会用-Wall打开所有的警告

出0入0汤圆

发表于 2019-10-23 11:50:03 | 显示全部楼层
我理解的,指针本身也是一种变量,这种操作可以近似理解为相互的赋值

出0入0汤圆

发表于 2019-10-25 00:49:39 | 显示全部楼层
其实只要记住void *指针使用的时候,强制转换所需要的类型,就可以啦!!!使用必须指明void *的类型。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 10:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表