-
注意符号位
a<<n a=a*2^n;
查看全部 -
按位异或作用:(1)定位反转
(2)数值交换
a = a^b;
b = b^a;
a = a^b;
查看全部 -
a为偶数:a&1 == 0
a为奇数:a&1 != 0
查看全部 -
预处理----->编译----->汇编----->链接
查看全部 -
终于看懂了
#define M int main( ,这句话的意思是用 M 代替 "int main( "这一串字符,所以后面的 M) 就相当于 int main()。
查看全部 -
左移n位=*2^n
注意溢出现象——int在移出时符号为被移出。
右移n位=/2^n
查看全部 -
按位异或:按位翻转;数值交换(a=a^b; b=b^a; a=a^b;);取反。。。。。。
查看全部 -
按位或的用法:设置指定位置(将指定位置和其的全1或)。。。。。。
查看全部 -
按位与的用处:清零(与全零与);保留特定位;判断奇偶数(和1与)。。。。。。
查看全部 -
静态数据结构:系统自动分配存储空间——整型、浮点型、数组。。。
动态数据结构:链表
链表包括头文件和元素,头文件包括地址,元素包括每一个节点,每一个节点包括用户需要的数据和下一个节点的地址(元素地址不定是线性的)
malloc函数用于分配动态空间,在头文件<malloc.h>之下。
查看全部 -
结构体占用的内存空间是字节对齐的,使计算机可以快速读写以空间换取时间:最后一个成员的偏移量+最后一个成员的大小+末尾的填充字节数
偏移量是此成员实际首地址和结构体首地址之间的距离;
成员字节大小,例,int是4字节, char是1字节
填充字节数偏移量不足4的倍数的,填充。
与结构体不同,共用体和其成员的地址都是一样的。
查看全部 -
3种调用成员变量的方法:
结构体变量名称.成员变量名
(*p).成员变量名
p->成员变量名
指针p=weapons;
struct weapon weapons[2]={{"name1",100,200},{"name2",100,200}};
printf("%s\n",p->name);//此时输出为weapons[0].name,即name1
p++;//指向了weapons[1]
查看全部 -
结构体中的成员变量表示方法:结构体变量名.成员变量名。
结构体数组每一个元素都是一个结构体类型。
查看全部 -
struct xxx{
};//struct xxx是一个类型的名字,像是int
定义和声明分离:struct xxx{
};
struct xxx elephant;
定义和声明一体:struct xxx{
}elephant;
结构体名和结构体变量名一致(只能定义一次):
struct{}elephant;
查看全部 -
本质上是和宏定义类似的关键字。
写法:typedef 原名 别名;
typedef int *p;//int *别名是p
经过预处理之后,别名不会被替换
作用域和#define不同,非全局。
查看全部
举报