變量的命名最好有意義
名字必須是字母,數字,下劃線組成,不能有特殊字符,同時不能以數字開頭
變量名不能是關鍵字
typedef---類型定義,類型重命名
#include <stdio.h>typedef unsigned int uint;
//將unsigned int類型重定義為uinttypedef struct Node{int data;struct Node* next;
}Node;
//將struct Node類型重定義為Nodeint main()
{unsigned int num1 = 0;uint num2 = 1;struct Node n1;Node n2;return 0;
}
#include <stdio.h>void test(){int a = 0;a++;printf("%d\n",a);
}int main()
{int i = 0;while(i < 5){test();i++;}return 0;
}
用static修飾變量a
#include <stdio.h>void test(){static int a = 0;a++;printf("%d\n",a);
}int main()
{int i = 0;while(i < 5){test();i++;}return 0;
}
????????static修飾局部變量的時候,局部變量出了作用域不銷毀。本質上,static修飾局部變量的時候改變了變量的存儲位置,影響了變量的生命周期,生命周期變長,和程序的生命周期一樣。
????????這一句沒有對應的匯編代碼
????????(前面的static可以理解為固定使其不執行,即為靜態,第一次創建后不會再重新創建變量并初始化,局部變量沒了創建和銷毀過程,每次使用的變量都是上次存起來的)
????????靜態變量在編譯期間就已經分配好了空間。
????????extern—聲明外部符號(告訴編譯器我在這個項目別的文件里定義了一個符號,你自己去找吧)
????????編譯,鏈接—>可執行程序
????????全局變量是具有外部鏈接屬性的
????????static修飾全局變量的時候,這個全局變量的外部鏈接屬性就變成了內部鏈接屬性,其他源文件(.c)就不能再使用這個全局變量了。我們在使用的時候就感覺作用域變小了,一定程度上來說可以保障安全性。
????????一個函數本來是具有外部鏈接屬性的,但是被static修飾的時候,外部鏈接屬性就變成了內部鏈接屬性,其他源文件(.c)就不能再使用了。
電腦上的存儲設備都有哪些?
寄存器(集成到cpu上)
高速緩存(cache)
內存
硬盤
????????一開始的計算機,對速度要求沒那么高,CPU和內存交換數據,后面隨著計算機的發展,對速度的要求越來越高,內存把需要的數據調到高速緩存,調到寄存器,再和CPU進行數據交換,滿足速度的要求。
#define定義宏
#define ADD(x,y) ((x)+(y))int main()
{int a = 1;int b = 2;int sum = ADD(a,b);printf("%d\n",sum);return 0;
}
????????宏就是完成替換
????????continue關鍵字不能用在switch語句里,用在循環里,能用在switch語句里的關鍵字有break,default,case。
????????define不是關鍵字,是預處理指令。