汎用ポインタ *void の関数を構造体と組み合わせて使う。

汎用ポインタ *void の関数を構造体と組み合わせて使う。

構造体をポインタとして操る。
struct points *a;
ポインタ状態のときは->演算子で操作。
a->x=3; aにはアドレスが入っている。

アドレスを渡す。
void my_func(void *a2){

キャスト
struct points* a=(struct points *) a2;

#include<stdio.h>

struct points{
        int x;
        int y;

};

void my_func(void *a2){
        struct points* a=(struct points *) a2;
        printf("%p\n",a);
        printf("%d\n",(a)->x+(a)->y);
}

int main(){
        struct points *a;
        a->x=3;
        a->y=4;

        printf("%d %d\n",a->x,a->y);
        printf("%p\n",a);
        my_func(a);

}

出力

3 4
0x0
0x0
7


だめだったら。。
実体をはじめてきちんと宣言。

#include<stdio.h>

struct points{
        int x;
        int y;

};

void my_func(void *a2){
        struct points* a=(struct points *) a2;
        printf("%p\n",a);
        printf("%d\n",(a)->x+(a)->y);
}

int main(){
    struct points a2;
        struct points *a;
        a=&a2;
        a->x=3;
        a->y=4;

        printf("%d %d\n",a->x,a->y);
        printf("%p\n",a);
        my_func(a);

}