ページ 1 / 1
void型の引き数
Posted: 2011年5月12日(木) 11:22
by ぽんた
以下のようなCの関数があります。
引き数 void * wordP の意味が分かりません。
wordPはポインタで、void型と定義され、関数内ではunsigned char
にキャスト?Cの記述ルールが分かっていないのでしょうか。
コード:
/* SwapWord() */
/* Swap a 2, 4 or 8 byte word. */
static void SwapWord(int length, void * wordP)
{
int i;
uchar temp;
for(i=0; i < length/2; i++)
{
temp = ((uchar *)wordP)[i];
((uchar *)wordP)[i] = ((uchar *)wordP)[length-i-1];
((uchar *)wordP)[length-i-1] = temp;
}
}
Re: void型の引き数
Posted: 2011年5月12日(木) 11:42
by へろりくしょん
単純に、long long 型でも、int 型でも、short 型でも受けれるように、void* 型にしてるだけだと思いますが。
wordP に与えられる実引数のバイト長を第一引数の length に指定するのでしょう。
内部で unsigned char 型にキャストするのは、単純に、バイト単位で扱いたいから。 ではないかと。
ちなみに、wordP は、void* 型です。
Re: void型の引き数
Posted: 2011年5月12日(木) 12:38
by ぽんた
void*型でググると出てきました。
これはどんな型のポインタでも受け取れる
汎用ポインタと呼ばれるものだそうです。
引き数内では、void型はポインタでのみ使えると覚えておきます。
ありがとうございました。