C the basics (array, complex)
阿新 • • 發佈:2020-12-08
陣列:
只有初始化定義才能 arr = { 0 };
結構體:
typedef struct namex { }name; 會建立一個name型別的結構體,也可用name進行型別定義,但是不可以定義指標,仍需要用struct name* 定義 。
重要小結:結構體中的只指向自身的指標需用 struct COMPLEX* 定義。
typedef struct SELF_REF { ///直到結尾才會完成定義,中途無法使用定義。 int a; SELF_REF* b;/// should be" struct SELF_REF* b; " int c; }SELF_REF;
COMPLEX* -> member name
struct COMPLEX{ int a; char b; char c }; 最大限度地節省空間。
作為函式引數的結構:
將函式名傳入函式的引數中可以得到成功的結果,但是非常的低效,因為C會在呼叫過程中先拷貝一份。以下是一個更好的方案:
void fun (COMPLEX* C){ C -> member_name;///以這種形式訪問並使用。 } fun(&COMPLEXTYPE);///以這種形式呼叫函式。 為了防止結構體被修改,也可: void fun (COMPLEX const *C) 當要多次使用輸入的指標訪問結構體時,可以定義為暫存器變數:void fun (register COMPLEX const *C)
函式內不可定義函式。