汎用ポインター

C
#include <stdio.h>

typedef struct _sample1 {
	char str1[7];
	char str2[13];
	double num1;
} sample1;

typedef struct _sample2 {
	char str1[11];
	char str2[3];
	int	 num1;
} sample2;

void output(void* data[]) {
	sample1* data1 = (sample1*)data[0]; // sample1 のポインタを取得
	sample2* data2 = (sample2*)data[1]; // sample2 のポインタを取得

	printf("sample1->str1: %s\n", data1->str1);
	printf("sample1->str2: %s\n", data1->str2);
	printf("sample1->num1: %f\n", data1->num1);

	printf("sample2->str1: %s\n", data2->str1);
	printf("sample2->str2: %s\n", data2->str2);
	printf("sample2->num1: %d\n", data2->num1);
}

int main() {
	sample1 data1 = {"123456", "123456789012", 12.345};
	sample2 data2 = {"1234567890", "12", 123};
	
	// void*は、任意のポインターを配列で受け取れる
	void* data[2] = {};
	data[0] = (void*)&data1;
	data[1] = (void*)&data2;
	output(data);
}
投稿日時: 2025-01-24 13:49:24

最近の投稿

タグ

アーカイブ

その他