Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
考虑到指针的大小不同,执行以下强制转换有多安全?(32/64 位)它会导致不正确的程序行为吗?
#define APL 1 #define GRP 2 void *fruits[][2] = { {"Apples", (void *) APL}, {"Grapes", (void *) GRP}, };
考虑到指针的大小不同?
这不起作用,标准允许将整数转换为指针。
但是强制转换的结果是(除了评估为 0 的常量表达式)实现定义的,并且可能不是指向您被允许操作甚至读取的内存的指针。
它会导致不正确的程序行为吗?
如果您使用这些指针(例如,转换为其他指针类型并取消引用结果),则可能导致未定义的行为,并导致各种不良行为。