c語言基本資料型別
int ,float , double, char.
構造型別 陣列, 結構體,列舉 指標
列舉型別
陣列的定義與初始化
普通陣列的初始化:
(1)先定義後初始化
int a[3];
a[0] = 1;
a[1] = 2;
a[3] = 3;
(2)定義的同時進行初始化
int a;//先定義後初始化是錯誤的,除了char型的陣列
int a[5] ;a[5] = a//這是錯誤的,因為系統檢測不到右邊是神馬型別的東西;
(3)部分初始化
a[5] =
a[5] = ; a[2] = 3;
(4)char型陣列的初始化
char型陣列的初始化不同於int型陣列
因為char型陣列可以先定義後初始化,但是只限於字串
如 char a[5];
a[5] = "fsaf";//正確可以編譯,因為系統知道右邊是乙個 字串
char a[5];
a[5] = ;//這是錯誤的,錯誤原因一樣,系統不知道右邊的是什麼型別
難點2
指標的定義與初始化
最普通的指標
int a;
int *p = &a;
注意,
定義指標如果沒有初始化,不能直接用scanf接收數字,因為p沒有指向,會發生野指標錯誤
函式指標的定義
void test();
void (*p)();// 只需要把函式名換成*p即可
函式指標可以作為形參來傳遞乙個函式, 如
void test1(void (*p)());
void test2();
test1(test2);相當於傳遞了test2的首位址,也就是傳遞了乙個函式
注意:不能傳遞自己,會造成死迴圈
指標函式(返回值位指標的函式)
char * test();
指向結構體的指標:
struct person *p;
struct person a;
p = &a;// 表示p指向了a;這裡與函式不同
a不能代表結構體的位址,因此需要用&a;
指標與陣列
二維陣列傳遞
二維陣列作為實參來傳遞,形參可以有兩種形式
第一種void test( char (*p) )
第二種void test(char p[len]);
結構體型別的初始化與定義
1.完全初始化
struct person ;//要記得此處的結束符
struct person p = ;
注意:結構體可以先定義後初始化,但是需要強制轉換,讓系統知道右邊的是什麼型別
struct person p;
p = (struct person);
//定義的同時完全初始化
struct person
p1;
結構體陣列
存又相同資料的結構體變數
struct person a[3] = ,,,
}不過上面都不是重點
定義結構體的最常用方法
typedef struct
p;p a = ; //取別名
列舉型別的初始化
enum day ;
enum day dd ;
dd = one; // 列舉型別可以先定義後初始化,因為系統知道兩邊的型別是什麼
// 列舉也可以當做整形變數,可以存乙個整形的資料
// 列舉一般配合使用 switch 來輸出列舉值
如int *p; s
,
初始化 1 預設初始化 列表初始化
初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...
陣列的定義與初始化
人們借助計算機來記錄每月的開支 日降水量 季度銷售額 企業可以借助計算機來管理員工薪水 倉庫存貨清單等等。採用陣列可以有效便捷地處理各種型別的資料。陣列 array 是由一系列型別相同的元素構成。可以使用申明來告訴編譯器需要乙個陣列,包含陣列元素的型別和陣列元素的數目。簡單陣列的定義char cod...
1 陣列初始化
1 方法1 2int yams 3 3 yams 0 1 4 yams 1 2 5 yams 2 3 6 方法2 7int yams2 3 若陣列沒有進行初始化,則其記憶體單元的值是不確定的,意味著元素的值為以前駐留在該記憶體的值 sizeof作用於陣列名,得到的是整個陣列的位元組數 只有在定義陣列...