编辑代码

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    void *dataPtr;
} DataItem;

typedef struct {
    DataItem data[3];
    int num;
} CONN;

void func2(int *ptr, CONN *conn)
{
    conn->data[conn->num].dataPtr = (void *)ptr;
    // printf("%p\n", conn->data[conn->num].dataPtr);
    conn->num++;
}

void func(CONN *conn)
{
    int *i = (int *)malloc(sizeof(int));
    *i = 10;
    int *j = (int *)malloc(sizeof(int));
    *j = 20;
    int *k = (int *)malloc(sizeof(int));
    *k = 30;

    int *ptr[3];
    memset(ptr, 0, sizeof(ptr));

    int *ptr1 = i;
    int *ptr2 = j;
    int *ptr3 = k;

    // printf("%p\n", ptr1);

    ptr[0] = ptr1;
    ptr[1] = ptr2;
    ptr[2] = ptr3;

    for (int q = 0; q < 3; q++)
    {
        switch(q)
        {
            case 0:
            {
                func2(ptr[0], conn);
                break;
            }
            case 1:
            {
                func2(ptr[1], conn);
                break;
            }
            case 2:
            {
                func2(ptr[2], conn);
                break;
            }
            default:
            {
                break;
            }
        }
    }
}

void print(CONN *conn)
{
    printf("%d\n", conn->num);
    for (int i = 0; i < conn->num; i++)
    {
        printf("num is: %d\n", *((int *)(conn->data[i].dataPtr)));
    }
}

int main() {

    CONN *conn = (CONN *)malloc(sizeof(CONN));
    memset(conn, 0, sizeof(CONN));

    func(conn);

    // printf("%p", conn->data[0].dataPtr);

    print(conn);
    

    return 0;
}