01 在C语言中,只有四种基本数据类型,整型、浮点型、指针和聚合类型(数据和结构)
02 在语言程序中,使用字符串常量会生成一个指向字符的常量指针,字符串常量的直接值是一个指针,而非字符串本身
03 int *a a是一个指向int的指针
04 char *message = “abcdefg” 声明一个指向字符的指针,并把字符串常量第一个字符的地址赋给了指针
05 使用typedef声明类型可以减少使声明变得又臭又长的风险。例子 typedef char *abc; abc a;–>声明a是一个指向字符的指针。
06 当你声明变量时,如果变量的值不会被修改,那就使用const修饰。
07 定义和声明的区别与联系
对于变量来说,定义就是声明.
例如: int a; 我们可是说它是定义也可以说它是声明。
但是对于函数来说定义和声明完全不是一回事 。
`void sum(int a,int b);`这是函数的声明
void sum(int a,int b)
{
}
整体是函数的定义 ,函数的定义没有分号 而且要加上一对花括号 ,里边是函数的实现。
函数一定要在定义前声明否则会报错 。我一般在主函数前写上函数的声明 ,然后在主函数之后写函数的定义。
08 任何代码块之外的变量-静态变量,值不会改变。
程序执行到声明自己变量时,才被创建-自动变量,存储与堆栈中,程序执行离开这块代码段时就会自行销毁,
09 编程提示的总结
1.为了保持最佳的可移植性,尽量使字符在有符号和无符号的交集中。或者不要对字符进行算术运算
2.不要依赖隐式声明
3.用他们使用时最自然的形式来表示字面值
4.不要把整型和枚举型混在一起
5.给结构体起新名字时使用typedef而不是#define
https://blog.csdn.net/ZYB946300928/article/details/87454827
typedef 和 #define的区别
(1)与#define不同,typedef创建的别名只受限于类型,不能用于值。
(2)#define是宏定义,在预处理阶段就已经替换完成;而typedef是以;结尾的语句参与编译,由编译器解释。
(3)在受限范围内,typedef比 #define更加灵活。
(4)宏定义作用域为宏定义命令起到源程序结束,typedef作用域限制在所定义的函数或者文件内(取决于此定义的位置)。
6.对于不做修改的变量用const修饰
7.使用名字常量而不使用字面值常量
8.不要在嵌套的代码块之间使用相同变量名 #define MAX_LEN 50
10 整数类型和浮点数类型的范围
https://www.cnblogs.com/lynlovehyl/articles/4673972.html
11 整型long赋值给short,double赋值给float
按二进制截断啊,和大小端无关,这属于类型转换类型的问题,不属于存储方式问题.
那将一个double型变量赋值给一个float型变量呢?
一楼讲得对,把long型赋值给short型,就把long的低字节赋值给short型,如果是double赋值给float,当double型的范围没有超出float所表示的范围时,就减小double型数据的精度,然后赋值给float,如果
double数据范围超出了float型,是未定义的。
12 const只能初始化,不能赋值