我有一個關於C中的指針表示的問題,如果我有正確理解本款C11標準:指針表示
C11(N1570),第6.2.5.28,類型,P。 36
同樣,指向兼容類型的合格或不合格版本的指針應具有相同的表示和對齊要求。
我推斷,類型int *
和int const *
具有相同的代表,但不是類型int **
和int const **
。我對嗎 ?
如果是這樣,我想知道爲什麼這兩種類型在第二種情況下沒有相同的表示形式?我的意思是,int
和int const
具有相同的表示形式,同爲int *
和int const *
,因此int **
和int const **
有什麼問題?
你爲什麼認爲'int **'和'int const **'有不同的表示? –
因爲標準說「指向合格或不合格版本的兼容類型的指針」,並且,如果我正確地理解,在int **和int const **的情況下,它們不是指向兼容類型的指針'int *'和'int const *'不兼容)。 – Taurre
這是正確的,它們不能保證具有相同的表示形式,因爲指針可以是指向常量內存或動態分配內存或任何其他內容的指針。我誤解了,並認爲你說的指針本身是一個不同的表示:\ –