编辑代码

#include <stdio.h>
int main () {

    //指针数组
    int num1 = 10;
    int num2 = 20;
    int num3 = 30;
    int *arr[3]; // 指针数组
    arr[0] = &num1;
    arr[1] = &num2;
    arr[2] = &num3;
    for (int i = 0; i < 3; i++) {
        printf("Value at index %d: %d\n", i, *arr[i]);
    }

    //结构数组
    typedef struct 
    {
        int id;
        char name[10];
    } People;
    People emp[3] = {
        {1, "Alice"},
        {2, "Bob"},
        {3, "Charlie"}
    };
    for (int i = 0; i < 3; i++) {
        printf("Employee %d: ID = %d, Name = %s\n", i + 1, emp[i].id, emp[i].name);
    }

    //结构指针
    People *empPtr = emp+1;
    printf("Employee ID: %d, Name: %s\n", empPtr->id, empPtr->name);
    
    //结构体包含指针与数组
    typedef struct {
    int age;
    char **hobby;
    } Wt;
    
    char *wt_hobbys[2] = {"little fish", "derivative"};
    Wt wt = {114514, wt_hobbys};
    Wt *wtPtr = &wt;
    printf("Employee age: %d, hobby1: %s, hobby2: %s\n", wtPtr->age, wtPtr->hobby[0], wtPtr->hobby[1]);

    //结构体嵌套
    typedef struct 
    {
        char name[10];
    } Person;
    typedef struct
    {
        Person person;
        char couple[10];
    } Full_person;

    Full_person mq = {{"xtmq"}, "koupier"};
    printf("%s with %s is a entire man\n", mq.person.name, mq.couple);

    //指针的指针
    char **ptr2;
    char *ptr1 = "time goes by";
    ptr2 = &ptr1;
    printf("%s\n", *ptr2);//这里需要注意 星号只有一个

    char **d_2_arr;
    char *strings[3] = {"p", "w", "qpiyanzi"};
    d_2_arr = &strings;
    printf("%s %s %c\n", d_2_arr[0], d_2_arr[1], *d_2_arr[2]);

    return 0;
}