[英]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.