一、 基本类型
C语言中的基本数据类型与其他语言没有什么区别 ,不做过多解释.美中数据类型所占用的字节数 可以使用sizeof方法获取 如:int类型的长度为sizeof(int)
二、指针
在C语言中,指针是应用场景比较多的数据类型,也是相对较难理解的地方. 其实 指针还是比较简单的.指针是存储是内存地址值的变量. 指针是一种特殊的变量,他的内部存储的是内存地址值.
指针是存储内存地址值得变量,它和内存地址值之间是存在区别的,它们的不同之处在于 指针是存在类型的,而内存地址值没有类型。 在这里就不得不解释一下为什么指针存在类型而内存地址值不存在类型。 内存地址值就是内存的一段地址,并不需要自己制定内存的长度。而指针虽然也是存储着一段内存地址,但是由于C语言中不同类型的变量其长度不同,虽然开始内存地址值一样但结束地址值不同,因此指针有类型 而 内存地址值没有类型。
示例:
int *p = &a;
在这里p是指针 而(*p)不是指针 可以类似的将(*p)看作a
三、数组
因为在c语言中不存在集合类(List),所以数组的应用非常广泛。同时也因为数组在内存中是一段连续的内存,所以对数组的操作不仅仅可以像java中那样常规遍历,还可以借助指针 进行遍历 代码如下:
第一种:
char string[20];
int i = 0;
for (; i<20;i++){
string[i] = i;
}
getchar();
第二种:
char string[20];
int *p = &string;
int i = 0;
for (; p<string+20;p++){
p = i;
i++;
}
getchar();
四、结构体
结构体的关键字 是struct 和java中的类 相似 其初始化方法很很多
示例:
第一种初始化:
struct Teacher
{
char *name[20];
int age;
};
void main(){
struct Teacher t = {"渣渣",20};
}
第二种初始化:
struct Teacher
{
char *name[20];
int age;
};
void main_2(){
struct Teacher t2;
t2.age = 18;
strcopy(t2.age, "垃圾");
}
五、共用体
共用体是将不同的数据项组织成一个整体,它们在内存中占用同一段存储单元。他们在使用的时候只能使用内部的一种,他们的size 是 由其内部数据中最长的那个决定的,同时还要符合自身对齐。即 4字节对齐。这样设计可以更灵活的使用和节约内存。
六、枚举
与java类似(其实是java抄袭)。不做过多介绍