[C]C语言教程(二)-跟着旭哥学C

作者: 程序猿_老李 | 来源:发表于2016-05-18 00:10 被阅读222次

    结构体

    定义:

    <pre>
    struct Student{ // 定义结构体Student, stu是创建的对象
    char a[17]; // 结构体里面可以有多种不同类型的变量
    int b;
    char c;
    double d;
    }stu;
    printf("%ld", sizeof(stu)); // 打印的是40
    </pre>

    分析:



    假设从地址0开始给结构体空间
    分配char a[17];(17字节) -> 现在偏移量是17
    接下来存int(4字节), 根据对齐方式, 当前偏移量必须是4的倍数
    需要补全3个字节达到偏移量20 (这3个字节什么也不存)
    分配int b; 偏移量24
    分配char c;(1字节), 偏移量24是1的倍数, 所以继续分配, 偏移量25
    分配double d;(8字节), 根据要求偏移量必须是8的倍数, 25需要补7
    补全7个字节, 什么也不存, 然后加上这8字节共40个字节

    预编译, 编译, 运行

    • #######define, #import, #include, #warning, #prama mark, #error, #if, #else, #endif 等等, 只要是用#开头的, 都是预编译, Xcode一直在进行预编译.
    • Command + B 编译, 是把OC代码转换成C代码等资源.
    • 运行, 就是程序在机器中, 跑起来
    • #######define N 3 (把项目中所有N换成3)

    类别名

    typedef int* apple1; // 给int *起个别的名字叫 apple1
    apple1 p = NULL, q = NULL; (apple1 还是int *)

    static

    static int a = 10; // 在编译时已经执行完了, 运行的时候不再执行, 确保a在每次运行的过程当中只初始化一次
    (可以设置断点, 运行时候不会停在它身上-> 代表运行时不执行这行代码)

    使用:

    <pre>
    void fun() {
    static int a = 0; // 下次走的时候,不想让a释放
    a++;
    }
    </pre>

    const

    const 声明的东西是 readonly(只读) 存放在常量区 (节省栈内存)
    • const int *a *a = 5 内容不能变 指针a可以指向别的
    • int * const a 指针不可变, 内容可以变
    • int const * const a 都不可以变 (const和int可以换位置)

    相关文章

      网友评论

        本文标题:[C]C语言教程(二)-跟着旭哥学C

        本文链接:https://www.haomeiwen.com/subject/sywirttx.html