1. 程式人生 > 實用技巧 >C the basics (array, complex)

C the basics (array, complex)

陣列:

只有初始化定義才能 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)

函式內不可定義函式。