Я пытаюсь создать массив указателей, который будет использоваться как массив данных различных типов.
Здесь я создал массив arr
для хранения 5 указателей, каждый из которых указывает на свою переменную. a
- это int
, b
- это float
, c
- это char
, d
- это string
, fun
- это function
.
#include <stdio.h>
#include <float.h>
#include <string.h>
void fun(){
printf("this is a test function");
}
int main() {
int *arr[5];
int a = 10;
float b = 3.14;
char c = 'z';
char d[] = "hello";
arr[0] = &a;
arr[1] = &b;
arr[2] = &c;
arr[3] = &d;
arr[4] = &fun;
printf("a : %d\n", *arr[0]);
printf("b : %d\n", *arr[1]);
printf("c : %d\n", *arr[2]);
printf("d : %d\n", *arr[3]);
*arr[4];
return 0;
}
Я пытаюсь заставить его распечатать значения a
, b
, c
и d
, а затем выполнить функцию fun
. Однако я получаю сообщения об ошибках типа:
warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
arr[1] = &b;
для arr[1]
, arr[2]
, arr[3]
и arr[4]
.
Пояснение: я пытаюсь сделать массив (или, после всех комментариев и ответов на данный момент, тип объекта, такой как структура или объединение), способный содержать объекты различных типов данных, включая переменные, функции, структуры и т. Д. Данные типы предполагаются известными. Я просто хочу хранить разные типы данных и использовать их в одном объекте, например в массиве.