主要內容:指標(c語言的代表,會c語言不會指標,恭喜你c語言白學了)
一、資料的儲存
位元組是最小的儲存單位(byte),乙個位元組成為乙個儲存單位(記憶體單元),不同的資料型別占用的儲存單元是不
同的(1個位元組是8位)
char1個位元組(byte)8位(bit)
short2個位元組(byte)16位(bit)
int4個位元組(byte)
32位(bit)
long8個位元組(byte)64位(bit)
float4個位元組(byte)32位(bit)
double8個位元組(byte)64位(bit)
為了正確的訪問記憶體單元,每個記憶體單元都有編號,每個編號成為記憶體位址,記憶體單元中的內容是我們需要用的
二、資料的訪問
直接訪問:直接訪問記憶體位址中的內容
簡介訪問:通過記憶體位址訪問記憶體中變數的值
指標是最常用的間接訪問方式,間接訪問方式隨處可見
訪問方式:
通過指標變數指向所定義的資料型別所開闢的記憶體單元的編號得到儲存的值
三、指標變數
存放記憶體位址的變數(通俗講就是存放自定義變數的位址的變數)
int *p = null 初始值恆等於0
通過int可以看出是乙個整型指標
注意:指標變數所占用的位元組數只與作業系統有關
輸出列印位址的轉換符是 「 %p 」
四、取址運算子& 和取值運算子 *
int a = 3,b = 1;/ / 自定義整型變數 a = 3,b = 1
int *p = &a; / / 定義乙個指標p,用取址運算子&取出a的記憶體位址賦值給指標p
printf(" %p ", p)/ / 輸出列印指標p所指向的位址值
& 和 * 是配套的操作符
五、指標的算術運算
注意:指標只有加( + )、減( - )運算
int *p = &a// 指標型別決定移動幾個位元組
p++:指標向高位移動4個位元組
p--:直接向低位移動4個位元組
指標的重指向
int a = 3, b = 5;
int *p = &a; / / 將指標p指向a的位址,得到a的位址值
p = &b; / / 講指標重新指向b的位址,得到b的位址值
指標變數的賦值意味著重指向
*p:1、指標變數定義時,只起修飾作用,告訴編譯器p是個指標
2、指標變數取值時,訪問記憶體位址為p的位址
六、指標與陣列
陣列:是用連續記憶體空間存放資料的構造型別
示例:int arr = ;
arr 恆等於 arr[0]
*p、*(p + 1)和*p + 1的區別
*(p + 1):將指標p向上移動乙個單位
*p + 1:p的位址加1
陣列本身就是乙個指標(指標可以當陣列名使用)
指標與陣列的區別
指標:只與系統作業系統位數有關
陣列:與元素個數和型別有關
那麼,用指標能否算出陣列元素個數?
有結尾標示的陣列能算出元素個數,例如字元陣列
整型陣列、浮點型陣列都不能
指標與字串
指標可以操作字元,也可以操作字串
示例:char string = " iphone " ; / / string為陣列名
char *p = string; / /指標p指向字元陣列首位址
*(p + 1) = ' v ' ; / /操作單個字元
printf(" %c " , p + 1); / /操作整個字串
七、指標陣列
存放指標的陣列稱為指標陣列
示例:char *string[3] = ;
注意:可以通過指標修改字元陣列,但是不能修改常量字串
指標與函式
即指標作為引數
陣列名代表陣列的首位址,而且是常量位址,不可被修改
第八課 混合
第八課 混合 opengl中的混色 在opengl中實現混色的步驟類似於我們以前提到的opengl過程。接著設定公式,並在繪製透明物件時關閉寫深度快取。因為我們想在半透明的圖形背後繪製 物件。這不是正確的混色方法,但絕大多數時候這種做法在簡單的專案中都工作的很好。rui martins 的補充 正確...
第八課 陣列
1 宣告 int arr string str 2 分配空間 arr new int 5 3 宣告同時分配記憶體 int arr new int 5 4 初始化 int arr new int 5 int arr2 1 宣告 int arr string str 2 分配空間 1 直接為每一維分配空...
第八課 函式
1.id 標識 2.type 型別 3.value 值 關於可變物件的修改,可以參考下面程式理解 a 1,2,3 首先給a賦值列表,1,2,3 print a,id a 列印a,和a的id a 0 6 換掉列表a的第乙個值,改為6 print a,id a 列印a,和a的id,a的id和之前的一樣。...