二維陣列
二維陣列的定義
型別 + 陣列名 + [常量表示式][常量表示式]
例如:
int a[2][3] float b[3][4]
二維陣列的引用
陣列名 [下標][下標]
例如:
a[4][3]
二維陣列的初始化
(1)分行給二維陣列賦初值(定義的時候賦值)
int a[3][4] = ,,};
(2)將所有的陣列放在乙個括號內
int a[3][4] = ;
(3)對部分元素賦值
int a[3][3] = ,,};
是對每一行的第一列元素賦值,未賦值的元素取0值,賦值後各元素的值為:
1 0 0
5 0 0
9 0 0
4)如果對全部的元素賦值,則定義時候對第一維的長度可以不指定,而第二維的長度不能夠省。
int a[3][4] = ;
等價於:
int a[4] = ;
二維陣列名及位址
陣列名是第乙個元素的首位址
第一維陣列相當於第二維的陣列名
a + i: 第i+1個一維陣列的位址
*(a + i): 第i+1個一維陣列首元素的位址
*(a+i)+j: 第i+1個一維陣列的第j+1個元素的位址
二重指標
二重指標一般用的場合:
(1)二重指標指向一重指標的位址。
#includeint main()
(2)二重指標指向指標陣列的位址。
#includeint main()
結構體在c語言中,可以使用結構體(struct)來存放一組不同型別的資料。結構體的定義形式為:
struct 結構體名;
結構體的初始化:
struct infor
; struct infor s1 = ; //完全初始化
struct infor s2 = ;
struct infor s2 = ; //部分初始化
給結構體成員賦值
strcpy(s1.name, "郭");
s1.is_male = 1;
s1.age = 17;
讀取結構體成員的值
printf("結構體元素:%d %d %s.\n", s.is_male, s.age, s.name);
相同結構體變數之間可以互相賦值:
struct infor
s1,s2;
s1.age = 2 ;
s2 = s1 ;
位元組對齊
struct str1 // 7
s1; // 8
struct str2
s2; // 8
struct str3 // 6
s3; // 8
struct str4
s4; //6
1、 結構體變數的位址是從4位元組對齊的未知開始(0、4、8、c)
2、各成員在結構體裡自身要對齊;
3、成員之間不滿足自身對齊,得填充(padding)
4、滿足結構體自身對齊的最小倍數
5、預設是4位元組對齊,最大的基本資料型別和這個預設值要相比較,取其小
C語言知識小結
c語言小結 1.概述 源程式.c 目標程式.obj 可執行目標程式.exe 2.資料型別 運算子 表示式 基本型別 整型,字元型,浮點型 構造型別 陣列,結構,聯合,列舉 指標型別 空型別變數命名的規定 只能由字母,數字,下劃線組成,第乙個字元必須為字母或下劃線 整型資料 int 4個位元組 範圍 ...
C語言移位知識小結
關於c語言移位功能的知識小結如下 1,進行2的n次方計算,使用移位效率會提公升很多 2,移位有時候會導致資料丟失,但有時候這正是我們要的功能 3,右移位操作是不可移植的 4,移位的操作符好是負數的時候,行為不確定。關於第4點進行一點簡單的驗證,寫 如下 include stdio.h int mai...
C語言 指標相關知識小結
1.int p null 和 p null的區別 int p null指的是將乙個指標初始化為null,具體過程為 int p p null。2.a與a的區別 inta 5 int p a int q a 這樣的 對嗎?解釋 a得到陣列的位址。a表示陣列首元素的首位址。a的a的值一樣,兩個指向的位置...