c语言结构体指针 【结构体各种恶心嵌套】

#include
struct s1
{
    float a;


    struct
    {
        int ba;
        int bb;
        struct
        {
            int bca;
            int (*bcb)[3];
        } *bc;
    } b;
};

要求是:用结构体往bcb里写入3用指针读出来;

首先:

struct {}b这是一种结构体定义没有给出该结构体的名称,但是定义了一个该结构体的变量b,也就是说,若是想要在别处定义该结构体的变量是不行的,只有变量n这种在定义结构体的同时定义变量才行。【是不是很恶心!,写点儿大众typedef 的不好么】

struct {}*bc应该类似于上面。

int (*bcb)[3]这是数组指针,数组指针就是说数组一个个元素里存的类型是指针类型的值 ,

然后 继续思考去,好多需要思考,结构体嵌套有意思么,没有意思!!!

然后:(*结构体指针变量).成员名 与 结构体指针变量->成员名 是等价的,为什么等价我就不造了

    struct s1 s={1.1,{1,2,{1,3}}};//这样初始化可以,但是如果分成两句变成直接赋值不可以,为什么呢
#include
struct s1
{
    float a;
    struct
    {
        int ba;
        int bb;

        struct
        {
            int bca;
            int (*bcb)[3];
        } *bc;
    } b;
};
int main( void )
{
    int a[3]={3};
    struct
    {
        int bca;
        int (*bcb)[3];
    }bc=
    {
        3,
        &a
    };

    struct s1 s=
    {
        3.14,
        {
            1,
            2,
            ( void* )&bc
        }
    };
    struct s1 *p=&s;
    printf("%d\n",*(p->b.bc->bcb)[0]);
    return 0;
}//这是久久写的,就非常好看懂了,
但是我觉得今日很懵逼,唉,今日所获微,今日获一堆问题,什么才算分配内存呢,我感觉初始化就已经分配了啊,,,溜,明天先自己谢谢,或者问问人类


你可能感兴趣的:(c语言,结构体,指针,2018)