int arr[2][3] = , };
陣列名是陣列第乙個元素的首位址,也就是arr == &arr[0]
arr[0]是第二維的陣列名,也就是arr[0] == &arr[0][0]
arr[0][0]是元素
//一重指標和二維陣列匹配
int *p = arr[0];
p++;
//指標陣列、陣列指標和二位陣列匹配
int *p[2] = ; // == p[0] == arr[0]
int (*p1)[3] = arr; // ((p1+i)+j)
void func(int **p)
//定義指標
int a = 23, b = 33;
int **p, *p1;
//繫結
p1 = &a;
p = &p1;
//呼叫函式
func(p);
int *a
a=(int *)0x123 //(int *)把數值0x123強制轉化為位址
*a=***
不能這樣使用非法位址
知識點
struct infor // struct infor 是識別符號,必須整體使用
; // 分號堅決不能少
struct
//struct data
s; // 這個s是變數名的意思;定義型別的同時給出了結構體的變數名
typedef
struct str5
st, *p_st; // st是struct str5的型別名,p_st是struct str5 *型別的別名
st a;//結構體型別的變數
p_st p;//指向結構體變數的指標
定義乙個型別,不佔空間,宣告該型別的變數時才分配空間。
typedef struct infor s; //重定義型別名
初始化完全初始化
s s1=;
部分初始化
s s2=;
s s3=;
運算子(.)是專用於結構體變數訪問個元素
注意:
s s3 = ;//錯誤:由於第乙個成員是字串型別,所以系統會讀取資料到遇到』\0』賦值給.name成員
結構體指標
struct
st *p;//野指標
struct
st s;
p = &s;
結構體陣列void set_value_func(struct st arr, int lenth)
}void show_infor_func(struct st arr, int lenth)
}struct st arr[3];
set_value_func(arr, 3);
show_infor_func(arr, 3);
結構體裡.號的實質
&s型別是struct st *
方法一
int *p_a = (int *)&s;
printf(「*p_a = %d.\n」, *p_a);
float *p_b = (float *)((char *)&s+4); // 4位元組
方法二
// 分析:位址值轉化為數字
float *p_b = (float *)((long)&s+4); // overlap
printf(「*p_b = %.2f.\n」, *p_b);
char *p_c = (char *)((char *)&s+8);
printf(「*p_c = %d.\n」, *p_c);
相同結構體變數之間可以互相賦值
srtuct
s1,s;
s1.a=1;
s1.b='a';
s1 = s;
位元組對齊
1、 結構體變數的位址是從4位元組對齊的未知開始(0、4、8、c)
2、各成員在結構體裡自身要對齊;
3、成員之間不滿足自身對齊,得填充(padding)
4、滿足結構體自身對齊的最小倍數
5、預設是4位元組對齊,最大的基本資料型別和這個預設值要相比較,取其小
struct str1 // 7
s1; // 8
struct str2
s2; // 8
struct str3 // 6
s3; // 8
struct str4
s4; //6
C語言單元小結 8
條件編譯ifndef 格式 ifndef head h 一般以檔名大寫和 來當巨集的名字 define head h 所有標頭檔案 endif作用 標頭檔案一般是用來宣告,會被其他的原始檔和標頭檔案include,當被多個檔案include的時候就會造成重複宣告。為了使得只宣告一次,引入了ifnde...
C語言小結
1.include 中關於stidio.h的解釋 一般會把用來 include的檔案的副檔名 叫 h,稱其為標頭檔案 2.scanf的輸入形式 scanf 格式控制,位址表列 位址表列中給出各變數的位址,位址是由位址運算子 後跟變數名組成的 比如 a b分別表示變數a和變數b的位址 3.指標運算子有...
c語言筆試小結
1.void p malloc 100 sizeof p 4 指標的位元組數,而不是指標指向的內容容量 2.void func char str 100 陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標 3.char str 100 sizeof str 100 不是函式的引數時 4.ch...