#include<stdio.h> 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<stdio.h> 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; }//这是久久写的,就非常好看懂了,但是我觉得今日很懵逼,唉,今日所获微,今日获一堆问题,什么才算分配内存呢,我感觉初始化就已经分配了啊,,,溜,明天先自己谢谢,或者问问人类