1. 大端与小端
CPU存储方式
大端模式:低字节 放高地址;高字节 地低址放
小端模式:低字节 放低地址;高字节 高低址放
2.指针和数组
指针可随时指向任意类型,而数组在静态存储区被创建;
所占字节不同;
指针只能进行==和!=运算;
数组不能赋等号但是可以strcmp;
3.sizeof与strlen
sizeof 求数据类型所占空间大小;(关键字、单目运算符)
strlen求字符串长度;(函数)
sizeof在预处理阶段计算好值;
strlen在程序运行时计算;
4.数组与链表
数组长度有限,链表采用动态分配内存形式;
链表不存在越界问题;
数组从栈中分配内存,链表从堆中分配空间(malloc)
5.TCP与UDP
TCP面向连接,传输数据大,传输速度慢,传输可靠;
UDP面向不连接,传输数据少。传输速度快,传输不可靠;(数据包易丢失)
6.define与const
define 宏定义没有类型 const 定义有类型;
7.define与 (枚举)enum
枚举为整形,枚举常量为int型,枚举可自动赋值;
枚举常量是实体中的一种,二宏定义不是实体;
枚举常量属于常量,宏定义不属于常量;
枚举常量具有类型,define没有;
#define宏常量在预编译阶段简单替换,枚举常量在编译时确定其值;
枚举常量可调试,宏常量不能调试;
枚举一次可定义大量相关常量,define只能定义一个;
8.typedef与define
原理不同:define预处理简单替换;tepedef是关键字,它在预编译时,有类型检查功能
它在自己 作用域内给一个已经存在的类型起别名,如typedef int INT, INT a,b 相当于
int a,b;
作用域不同:
define没有作用域的限制,typedef有自己的作用域;
对指针操作不同:
#define INT1 int *;
typedef int * INT2;
INT1 p1,p2; //int * p1 ==INT1 p1申明一个指针变量p1和一个整形变量p2
INT2 p3,p4 //p3,p4都为指针变量