• 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) 

    函数内不可定义函数。

  • 相关阅读:
    中国大概可用NTPserver地址
    ROOT android 原则。 基于(zergRush)
    Struts2他们拦截器实例定义—登陆权限验证
    引用与指针
    address_space 从哪里来
    C++ 可以多个函数声明
    linux下远程管理利器-tmux
    内核空间和用户空间的分界 PAGE_OFFSET
    io端口
    C中程序的内存分配
  • 原文地址:https://www.cnblogs.com/porest/p/14103563.html
Copyright © 2020-2023  润新知