幾天前同事感覺我們的驅動**中,有幾個地方出錯了。原因是,申請了兩個結構體(a和b)的空間,呼叫mmset()初始化為0後,就直接引用,該結構體a裡的值了,感覺沒做初始化。經過我倆的**,得出結論,這是申請結構體空間,巧妙得到結構體b的一種方法。例子如下:
#include
#include
struct aa;
struct bb;
int main(void)
{struct aa *a_a;
struct bb *b_b;
char *p=null;
int i;
int len=sizeof(struct aa)+sizeof(struct bb);
a_a=(struct aa *)malloc(len);
p=(char *)a_a;
b_b=(struct bb *)&a_a->a4;
a_a->a1=0;
a_a->a2=1;
a_a->a3=2;
a_a->a4=3;
/********************************************/
b_b->b1=4;
b_b->b2=5;
b_b->b3=6;
for(i=0;iprintf("-----%d\n",*p++);
return 0; }
結果如下:
-----0
-----1
-----2
-----4
-----5
-----6
-----0
由此可以看出,結構體a_a中的a4的作用就是定位結構體b_b的位置;這個例子可以在v4l2中找到應用。水平有限,如果理解有誤或有更深作用的請指教。
MATLAB struct結構體的應用
與建立數值型陣列一樣,建立新struct物件不需要事先申明,可以直接引用,而且可以動態擴充。比如建立乙個複數變數x x.real 0 建立欄位名為real,並為該字段賦值為0 x.imag 0 為x建立乙個新的字段imag,並為該字段賦值為0 x real 0 imag 0 然後可以將其動態擴充為陣...
C 結構體的應用
注意,第17行這裡結構體型別定義的形參只能是引用型別的,memcpy與strcpy的比較 memcpy是複製位址內的內容,例如如下 所示 從 char s開始賦給array,位址賦值的大小是s strcpy只能複製字串,其他的複製字串以外的內容。結構體作為型別進行寫入和讀出 include incl...
結構體指標的應用理解
在cjson呼叫時遇到的結構體引數賦值時的問題,需要cjson 才行,下面兩種方法都行,對比一下。也對指標理解更深入 結構體給函式當形參時,由於主函式裡也沒分配結構體空間,只有結構體的位址,區域性函式裡面只能給區域性結構體位址,給結構體的位址放在結構體位址的空間中,要有存放結構體位址空間的位址,也就...