2012-04-11 11 views
1

私はC言語で何かをコーディングしていて、 "これを次のようなバイト数のデータ型を指すポインタにキャストすると便利ですこの番号"。C:指定された長さの型へのポインタ

例では、わかりやすくなりました。私はsize_tを使ってシステム上のポインタのサイズを取得しています。今度は、void *ポインタをそのサイズのデータ​​型へのポインタに移植可能にキャストしたいと思います。私はそれを任意のポインタ型にキャストすることができ、それは同じ長さになりますが、ポインタの算術は、変数が指しているデータ型によって異なります。また、私の場合、size_tは8バイトになるので、doubleもありますので、私はvoid *double *にキャストできますが、私はポータブルなソリューションを求めています。これを行う方法はありますか?

+2

たぶん何」を説明この奇妙なキャスティングで達成しようとすると、あなたの実際の目標が何かをする方法があるかもしれません。 – Mat

+0

'sizeof'の' size_t'を使用しますか? – asaelr

+0

@MatそれはCで 'malloc()'関数を実装する複雑な代入でした。これはキャストとポインタで乱雑になりがちですが、私はもっと簡単な方法はないと思っています.. とにかく、ありがとうすべての回答者、素晴らしい提案。 –

答えて

0

size_t*について間違って何を(私はあなたの質問を理解仮定)

void *voidptr=... //assign whatever you want. 
char (*myptr)[n]=voidptr; //a pointer to char[n] 
0

ポインターと同じサイズのポインターを使用する場合は、void **を使用しないでください。あなたが行うことができますあなたがnバイトで型へのポインタ必要がある一般的な場合、では、

関連する問題