至LESSON24
float a = 5 / 2;
此時a為2.000...
float a = 5 / 2.0;
那麼a為2.50000...
int array[10] = { 0 };
第一個元素 array[0] 被顯式初始化為 0
其餘9個元素 會自動被初始化為 0(這是C語言的規則)
int a = (c = 2, b = 3, 1);
從左到右計算 最後一個表達式的結果是整個表達式的值。
所有局部變量其實都是auto變量
[]在訪問過程中是操作符 為雙目 arr[10] 操作數為arr 和 10
在定義過程中不得用變量 此時[]不是操作符
函數的static情況類似於變量。
register int a = 3; //建議3放入寄存器中
define:
1.定義標識符常量
2.定義宏
#define ADD(a,b) ((a) + (b))
直接調用即可:
int a = ADD( 3 , 4);
#define ADD(a,b) ((a) + (b))
#include <stdio.h>
int main() {
printf("%d",ADD(3, 4));
}
有2的32次方種的地址 每個地址對應着一個內存單元 一個內存單元1Byte 所以計算下來32位的機器最多可以管理4G的內存
指針變量的類型指的是 地址下所對應元素的類型
四個地址 對應 四個字節:0a 00 00 00
一位十六進制字符對應四位的二進制字符(8421)
這裏就有8x4=32位的二進制 也就是4個字節 這些都是牢牢對應的 也就是説一個地址 一個字節 兩個十六進制位
指針是用來存放地址的,地址的大小取決於機器是32位or64位,一個地址64位那麼就是8個字節 。
解引用操作符的優先級低於成員成員訪問運算符,故要用(*p).age 或更優的替代 p->age
-> 左邊是結構體指針變量 右邊是成員名
%p是專用來打印地址的
這是typedef的常見用法 也就是起別名 typedef 本名 現有名
define不是關鍵字 是預處理指令
else和上一個if匹配 而不是看語句對齊的情況。