3

次のようなコードがあります。

#include <stdio.h>
typedef struct SomeStruct* ptr;
main(){
  printf("%lu\n",sizeof(ptr));
}

指定されたコードは のサイズを出力しstruct SomeStruct*ます。しかし、私は欲しいですsizeof(struct SomeStruct)。構造体の名前が事前にわからない場合でも、 が指す構造体のサイズを見つける方法はありptrますか?

4

2 に答える 2

5

type の変数がある場合はptr、それを逆参照できます。

ptr v;
sizeof(*v)
于 2012-07-23T08:02:38.473 に答える
5

NULLは type に変換できる変数なのでptr、単純に次のように使用します。

sizeof *(ptr)NULL

別の方法として、ポインターを型定義するという醜い慣行を回避することもできます。そうすれば、この問題は完全になくなります。

于 2012-07-23T08:27:47.810 に答える