c語言結構體指標 【結構體各種噁心巢狀】
阿新 • • 發佈:2019-02-04
#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; }//這是久久寫的,就非常好看懂了,