繁体   English   中英

在C中的2D数组中将int转换为void

[英]Cast int to void in a 2D array in C

考虑到指针大小的变化,进行以下强制转换的安全性如何? (32/64位)是否可能导致错误的程序行为?

#define APL 1
#define GRP 2

void *fruits[][2] = {
    {"Apples", (void *) APL},
    {"Grapes", (void *) GRP},
};

考虑到指针的大小不同?

这没有任何作用,该标准允许将整数转换为指针。

但是强制转换的结果是(除了常量表达式的值为0以外)实现定义的,并且可能不是指向允许您操作甚至读取的内存的指针。

会导致错误的程序行为吗?

如果使用这些指针(例如,转换为其他指针类型并取消引用结果),则可能导致未定义的行为,并导致各种不良行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM