C言語でのvoidポインタのパラメータの渡し方は?
C言語では、voidポインタを使用して任意の種類のデータを渡すことができます。関数に引数を渡すには、引数のアドレスをvoidポインタに代入し、その後、関数内でvoidポインタを適切な型に変換して引数の値を取得します。
以下は、voidポインタを使用して関数に引数を渡す方法を示すサンプルコードです。
#include <stdio.h>
void printValue(void *ptr, char type) {
if (type == 'i') {
int value = *(int*)ptr;
printf("Integer value: %d\n", value);
} else if (type == 'f') {
float value = *(float*)ptr;
printf("Float value: %f\n", value);
} else {
printf("Invalid type\n");
}
}
int main() {
int intValue = 10;
float floatValue = 3.14;
printValue(&intValue, 'i');
printValue(&floatValue, 'f');
return 0;
}
上記の例では、voidポインターとデータ型を表す文字を引数として受け取るprintValue関数を定義しました。この文字に基づいて、voidポインターを対応する型に変換し、引数の値を表示します。
main関数内で、整数型変数intValueと浮動小数点型変数floatValueを宣言し、それぞれのアドレスをprintValue関数に渡し、データ型も指定します。
このプログラムを実行すると、次の結果が出力されます。
Integer value: 10
Float value: 3.140000
この方法を使うと、voidポインタを使って異なる型のパラメータを関数に渡し、必要に応じて関数内で型変換を行うことができます。