-
struct{ char ; int ; }stu_1;查看全部
-
struct stu{ char ; int ; long ; }stu1; struct stu stu2;查看全部
-
struct stu{ }stu2; stu stu1;查看全部
-
還沒申請空間,只說明了類型查看全部
-
typedef{},#define全可以用查看全部
-
按位與:4和7 即0100與1110做邏輯與運算。查看全部
-
struct 結構體名 xx{ char name[20];//在定義數組時name[20]表示長度20,而數組中的元素下標是從namep[0]開始。 } struct 結構體名 xx; xx={"zeng"};//其中只有一組元素時 struct 結構體名 *p;//指針調用 p=&xx;//&不能省略。 printf("%s",(*p).name);等價于printf("%s",p->name);等價于(%s",xx.name); xx[2]={{"zeng"},{shuai}};//xx中有多組元素 struct 結構體名 *p;//指針調用 p=xx;//這里&省略,p指向的是xx[0]即第一組元素。 printf("%s",p->name);//p->name即為xx[0].name p++;//表示xx +1 即輸出xx[1]; printf("%s",p->name);//即xx[1].name查看全部
-
結構體定義: struct 結構體類型名{ xxx xxx }; 在函數中調用時 struct 結構體類型名 變量名(前兩部分效果類似定義 int 變量 中的int)查看全部
-
typedef 簡記:取別名;但是屬于C語句,結束要加分號,與#define 不同。 typedef int tni;即將int 用tni代替,在之后的int定義可直接寫為:tni i; typedef int *p;其含義是將符號*用p代替,在指針定義中*q=null即可等價為pq=null查看全部
-
宏定義時由于是看作字符串的替換,因此在設計函數時利用宏可以不用考慮輸入值的類型,這與普通的函數定義不同。 例如:#define ADD(a,b) (a+b){這里后面的括號是為了防止調用多次時優先級出錯:main 函數種。ADD(2,3)*ADD(2,3)如果定義時沒有括號則是2+3*2+3,其與(2+3)*(2+3)不同。因為預處理階段沒有函數運算,定義的東西只會被當作字符串。但在調用后可以實現其功能。} 而普通函數例如int add(int a,int b)除了在開頭要聲明值的類型,還要設置返回值,因此在定義過程與調用過程相對復雜。若能用宏定義實現的情況應優先考慮宏定義查看全部
-
宏定義的是 字符串,相當于字符串的替換查看全部
-
p=weapon_2而不是p=&weapon_2這部分是有難點的,數組的名字代表了這個數組的內存首地址,數組括號內的長度代表了數組的單元數,數據類型是int的話就按照int類型(32位系統上是4個字節)乘以單元數的長度,如果數據類型是結構體的話就按照結構體的長度乘以單元的長度。 總之數組名字代表了這個數組的內存首地址 p++,不是內存位置右移了一個字節,而是右移了一個單元長度的結構體weapon的內存長度。所以就不難理解為什么右移到了第二個結構體實例的首地址上了查看全部
-
宏不以分號結尾查看全部
-
這里講了偏移量,結構體的存儲方式查看全部
-
在c語言中 #define 宏命令只是單純的字符串的替換 不考慮c的語法查看全部
舉報
0/150
提交
取消