zoukankan      html  css  js  c++  java
  • C学习笔记

    1、struct

    struct 是一种复合数据类型,其构成元素可以是一些复合数据类型,如array,struct,union,缺省情况下,编译器为结构体的每个成员按其自然对齐(默认对齐,按照结构体成员中size最大的成员对齐)分配空间,第一个成员和整个结构体地址相同。

    使用伪指令#pragma pack(n),编译器将按照n个字节对齐,若n大于结构体中最大成员size,则结构体扔按照size最大的成员进行对齐。

    2、static关键字的作用

    在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变

    在模块内函数体外,一个被声明为静态的变量可以被模块内所有函数访问,不能被模块外其他函数访问,是一个本地的全局变量

    在模块内,一个被声明为静态的函数只可被这一个模块的其他函数调用

    3、const关键字的含义

    4、volatile有什么含义

    一个volatile修饰的变量可能被意想不到的改变,因此每次访问都重新读取这个变量的值,而不是使用保存在寄存器里的备份。例如并行设备的硬件寄存器、一个中断服务子程序中会访问到的非自动变量、多线程应用中被几个任务共享的变量

    2、c高效编程

       第一招:以空间换时间,例如函数调用需要压栈和出栈操作,如果换成宏,虽然占用了大量的空间,但消耗的cpu时间减少了

       第二招:数学方法解决问题,例如:I=(100*(1+100))/2 (求1~100的和)

       第三招:使用位操作,例如:j = 456%32操作可以替换为:j = 456 - (456>>4<<4);

       第四招:汇编嵌入

    备注:

    1、置位操作函数:

    #define bwMCDR2_ADDRESS 4

    #define bsMCDR2_ADDRESS 17

    #define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)

    #define BIT_MASK(_bf)(((1U<<(bw##_bf))-1)<<(bs##_bf)

    #define SET_BITS(_dst,_bf,_val) ((_dst)=((_dst)&~(BIT_MASK(_bf)))|(((_val)<<(bs##_bf)&BIT_MASK(_bf))))

    SET_BITS(MCDR2,MCDR2_ADDRESS,RegisterNumber)

  • 相关阅读:
    PAT(乙级)1007
    PAT(乙级)1006
    PAT(乙级)1005
    PAT(乙级)1004
    C算法实现:将字符串中的数字返回为整型数
    PAT(乙级)1002
    PAT(乙级)1001
    NOI接水问题
    【BZOJ】【2756】【SCOI2012】奇怪的游戏
    【BZOJ】【2631】Tree
  • 原文地址:https://www.cnblogs.com/s08243/p/4168357.html
Copyright © 2011-2022 走看看