文章目录
一、文件类型
除了.exe文件,其他的文件格式都不可执行。
二、编译链接过程
三、进制转换
(103)10->(0110 0111)2->(147)8->(67)16
四个二进制位是一个十六进制位。
三个二进制位是一个八进制位。
特殊数字:127->0x7f 255->0xff
四、数据类型大小
C语言中数据类型和对应数据类型所占的字节
整型还分有符号和无符号数(unsigned;无符号数不能表示负数)
char类型也是整型的原因是因为char类型表示的字符在内存中是以ASC码的形式存放,ASC码占一个字节
五、定义和声明的区别
六、变量和常量
1.局部变量和全局变量
#include<stdio.h>
#define g_max 10 //全局变量
int main()
{
int a=10;//局部变量
{
int b=0;//块内变量
}
return 0;
}
2.C语言中的的常量。
3.常变量与宏常量
上边两者之间的区别:
1,常变量属于整型,宏常量没有类型,
2,会给常变量开辟存储空间,而宏常量则不会。(在预编译时编译器会把宏常量替换掉)
4.枚举常量
enum week{mon=1,Thus=2,sun=3}(1,枚举常量只能是整型。2,如果想使用枚举常量的话,枚举常量的取值范围必须在枚举范围之内。)
七、定界符
字符串是以\0作为结尾的,所以它的大小是字符串个数加上一个空字符,而算它的长度时就不需要加\0。
八、程序和进程的区别
程序和进程
程序是静态的,进程是动态的。
九、作用域(可见性)和生存期
十、函数的声明和定义
函数的声明
函数的声明时可以省略形参,但是不可以省略形参的类型。
函数的定义
a=b+c ==>a=a(b+c);**
十一、指针
x86情况下指针大小是4字节,x64情况下指针大小是8字节;
指针只能是四字节或者八字节,因为无论什么类型存放都只是把首地址给到指针。
打印地址时的操作指令
** int * ip 此处的 * 为声明的意思。
* ip 此处的 * 为指向的意思。
ip=&a;把a的地址给ip。
ip=100;(在语法层面上讲ip就是a,把100赋值给ip就是把100赋值给a)**
十二、关键字
1.extern:
引用同一工程中其他工程中的函数或者变量。
2.static:
1,增加变量的存在时间,一直到主函数执行完成后才会消亡,但是可见性没有发生变化。
定义a为静态局部变量时,在编译连接过程中,a的数据将被送到数据区,且只被初始化一次。(在存储a内存的下边会有初始化标志,当第二次初始化时会检查该标志,若已被初始化就不会再次初始化a的值。)
2,将函数或者变量变成本文件的私有物,无法被extern引用。
在函数或者变量前加上static,该函数无法被引用,改变其可见性,其只能在本文件中可见。
3.const:
4.typedef
指定新的类型名来代替已有的类型名。
方法:1,先按定义变量的方法写出定义体(int i;)
2,将变量名字换成新类型名(将i换成Count)
3,在最前面加上typedef(typedef int Count)
4,然后就可以用新类型名去定义变量(Count i=1与int i=1作用相同)
简单的说,就是按定义变量的方式,把变量名换上新类型名,并且在最前面加“”typedef“”,就声明了新类型名代表原来的类型。
这里的struct student s1与GYStudennt s2 作用一样。
5.sizeof
计算类型的大小,需注意的是在编译时期就已经确定。