C the basics (array, complex)

数组:

只有初始化定义才能 arr = { 0 }; 

memset(a,0,sizeof(a)); 是中途清零的方法。

 

结构体:

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) 

 

函数内不可定义函数。

 

posted on 2020-12-08 16:57  porest  阅读(44)  评论(0编辑  收藏  举报