-
共用體成員的地址是相同的
union?data{} printf("%p\n%p\n%p\n",&data_1.a,&data_1.b,&data_1.c);
查看全部 -
struct?weapon?weapon_2[2]?=?{{},{}}; //?weapon_2?為?weapon?數(shù)組第一個元素的地址,故 struct?weapon?*?p; p?=?weapon_2; p->name?//?相當(dāng)于weapon_2[0].name p++;?//?則相當(dāng)于?weapon_2[1].name
查看全部 -
struct?stu{}; //?使用 struct?stu?xxx; //通過別名 typedef?struct?stu{ }?stu_t; stu_t?xxx;?//?與上上面的一致
查看全部 -
typedef 相當(dāng)于給類型取一個別名
typedef?int?tni; tni?a?=?0;?//?int?a?=?0; typedef?int*?p; p?q?=?NULL;?//int?*q?=?NULL;
查看全部 -
#define?N(n)?n*9 //則 int?a?=?10; int?b?=?N(a);??//?int?b?=?a*9 #define?ADD(a,b)?a+b?//?加括號保險,故 #define?ADD(a,b)?(a+b) // int?x; int?y; int?b?=?ADD(x,y);?//?x+y
查看全部 -
結(jié)構(gòu)體的初始化和引用:
******************
#include <stdio.h>
struct weapon{
?char name[20];
?int atk;
?int price;
};
int main(){
?struct weapon weapon_1={"weapon_name",100,200};
?printf("%s\n,%d\n",weapon_1.name,weapon_1.price);
?int a[2];
?struct weapon weapon_2[2]={"weapon_name1",50,100,"weapon_name2",100,200};
//?struct weapon weapon_2[2]={{"weapon_name1",50,100},{"weapon_name2",100,200}};
?printf("%s\n,%d\n",weapon_2[0].name,weapon_2[1].atk);
?return 0;
}*******************
weapon_1.name:成員變量
34行:初始化一個武器結(jié)構(gòu)體對象
35行:訪問這個結(jié)構(gòu)體對象中某一個成員的值(使用“.”運算符)
.運算符在所有運算符中優(yōu)先級最高
36、37行分別為:定義普通數(shù)組和結(jié)構(gòu)體數(shù)組
38行:輸出的寫法(當(dāng)普通變量用就好了)查看全部 -
結(jié)構(gòu)體的定義和聲明:
******************
#include <stdio.h>
struct weapon{
?char name[20];
?int atk;
?int price;
}weapon_1;
int main(){
?struct weapon weapon_1;
?return 0;
}******************
結(jié)構(gòu)體是不同類型變量的集合
數(shù)組是相同類型變量的集合struct weapon :結(jié)構(gòu)體類型的名字
weapon_1:結(jié)構(gòu)體變量的名字
第一個{}里面:各個成員“}weapon_1;”和“struct weapon weapon_1;”等價(一般兩種定義方法)
13行-使用類型的名字去定義:聲明和定義分離的形式(最常用)
11行-直接在聲明的時候去定義(程序不便于維護(hù))查看全部 -
原理:利用相同的數(shù)異或必為0,異或滿足交換率和任何數(shù)和0異或都等于本身。
比如:
1.a=a^b;
2.b=b^a=b^(a^b)=b^b^a=0^a=a;
3.a=a^b=a^(b^a)=b^a^a=b^0=b;
查看全部 -
遞歸:在函數(shù)調(diào)用過程中被調(diào)用的函數(shù)調(diào)用它本身的一個過程
查看全部 -
鏈表:能夠動態(tài)存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
靜態(tài)鏈表的節(jié)點均在程序中進(jìn)行編譯
原理:head->1,和2的地址->2,和3的地址->…………->n,和NULL. 每次若需訪問第n個數(shù)據(jù)必須知道前一個數(shù)據(jù)的地址再找到該數(shù)據(jù)的地址
查看全部 -
若要指向結(jié)構(gòu)體中的任意一個變量,有如下四種方法:
????e.g struct weapon weapon_1{"weapon name"}
weapon_1.name
struct weapon (*w); w =&weapon name; ?(*w).name;
struct weapon (*w); w =&weapon name; ? w->name;
struct weapon *p; p=weapon_2;(指針訪問該數(shù)組第一個數(shù)據(jù)的位置)
查看全部 -
因為結(jié)構(gòu)體數(shù)組名本身就是指針地址 所以賦值給指針時 前面不用加&
查看全部 -
預(yù)處理對宏只會做字符串替換,不是語法,運算
查看全部 -
C編譯步驟
查看全部 -
結(jié)構(gòu)體指針
指向結(jié)構(gòu)體的指針e.g struct weapon *w;
w=&weapon_1;
printf("name=%s\n", (*w).name/w->name/weapon_1.name);
weapon_2既為一維數(shù)組(其中包含兩個結(jié)構(gòu)體各為兩個數(shù)組中的元素),又為指向該數(shù)組中第一個元素的指針。
查看全部
舉報