總結 1 定義與初始化

2021-07-04 19:05:22 字數 1911 閱讀 5048

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作用於陣列名,得到的是整個陣列的位元組數 只有在定義陣列...