簡體   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