1. 程式人生 > >c語言課堂筆記(11.17)

c語言課堂筆記(11.17)

sizeof 計算位元組數
strlen計算字串長度(不包含\0)
例:lello
sizeof計算得6(包含\0)
strlen計算得5
printf(“%%”)輸出%
fflush清空輸入緩衝區
scanf 只能決定寬度不能決定精度(%m)
scanf(“%*”)中% 為賦值抑制符(取完值不賦給任何變數)
int i:定義變數(分配空間,只能定義一次)
extern int i:宣告變數(不分配空間,可以無數次宣告但每次都要一樣)
儲存空間劃分:程式區,靜態儲存區,動態儲存區,堆區,棧區
c的儲存類別:auto ,static,register,extern
register暫存器(1。只能整型 2。不能取地址 3。不能宣告成靜態)
全域性變數+static :限制使用範圍,只在當前程式下使用(多個專案中全域性變數重名互不影響)
const (與const靠的近的就不可修改)
例:const int a(a不可修改但a可修改)
int * const a(a 不可修改但 a可修改)
int const * const a(a和 * a都不可修改)
volatile 限制優化(在硬體程式設計中使用):例如死迴圈等不需要優化的命令
struct { };結構體

;不能漏
字對齊(int 4位元組)
半字對齊(short 2位元組)
字對齊優先於半字對齊
減少記憶體空洞的方法:同類型定義的成員放一起
例;struct node
{
char ch; ->4位元組
int num;->4
char ch1;->4
char ch2;->和ch1共用4位元組
double c;->8
char ch3->4
short b;->和ch3共用4位元組
}
char name[20]=“ 輸入字串”(初始化)
name[20]=“輸入字串”(不能這樣進行賦值)
strcpy(name[20],“字串”);(若未初始化則要這樣進行賦值)
scanf(“%s”)不能輸入帶空格的字串
gets()只認回車(可輸入帶空格的字串)
->指向運算子優先順序最高

struct *p: 【(*p).num p->num】
p->num++先取num的值再對其進行其他運算最後自加賦值
++p->num先取num的值對其進行++運算再其他運算然後賦值
union{};共用體(分配空間為定義位元組數最大的那個)
大端位元組序:系統將高位資料放在了低位系統記憶體中
小端位元組序:系統將低位資料放在了低位系統記憶體中