C语言的类型可分为以下四种:
1.基本类型
- 整数型
- 浮点型
2.void类型
3.枚举类型
4.派生类型
常用的整数类型有char short int long (按存储大小由小到大排序)
浮点类型有float(单精度浮点型) double(双精度浮点型、默认类型),顾名思义就是双精度浮点型能精确到小数点后很多位,但代价是占用更大的存储空间。
最常用的是基本类型和void类型,类型是声明变量或常量或函数的返回值。变量的类型定义了该变量的存储空间、存储类型。定义变量的姿势:int number = 1;
定义的位置可以在函数外或者函数内。
这里的
=
并不是数学意义上的相等,而是将右边的值赋予给左边变量。而==
才是C中相等的意思。
函数的返回类型也是需要定义的:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
void getNumber() {
printf("Hello, World!\n");
}
比如上面这两个函数,一个是int类型、一个是void类型。能看出区别吗?这里的类型指的是该函数运行结束后该返回什么样的类型。
比如main()要返回一个int类型,所以其函数体在运行结束后return 一个0回去。
而getNumber()要返回一个void类型,换言之就是不用返回任何东西回去。也可以写成下列形式:
void getNumber() {
printf("Hello, World!\n");
return ;
}
这里它return一个空回去了。
变量的定义位置可以在函数外或函数内
当在函数外定义时,该变量为全局变量。
当在函数内定义时,该变量为局部变量。
#include <stdio.h>
int number = 110;
int main() {
printf("%d\n", number);
return 0;
}
void getNumber() {
printf("%d\n", number);
}
其中名为“number”的变量,被定义为int类型。并且被赋值为110。而且它是在函数外定义的,所以它是全局变量,在每个函数体内都可以访问。
如果是定义在某个函数内,则其他函数体内访问不到该函数:
#include <stdio.h>
int main() {
int number = 110; //定义在main函数体内,其他函数体访问不到。
printf("%d\n", number);
return 0;
}
void getNumber() {
printf("%d\n", number); //这里因为访问不到number这个变量,所以这里报错。
}
如果一个变量已经定义在函数体外作为全局变量,那么在函数体内又定义一次会发生什么后果:
#include <stdio.h>
int number = 110; //定义全局变量
int main() {
printf("开始打印\n");
getStaticNumber();
getLocalNumber();
return 0;
}
void getStaticNumber() {
printf("%d\n", number);
return;
}
void getLocalNumber() {
int number = 220; //定义局部变量
printf("%d\n", number);
}
程序运行结果如下:
开始打印
110
220
函数“getLocalNumber()”运行时首先会查找自己的局部变量是否拥有变量number的存在,如果有则使用。
函数“getStaticNumber()”运行时先在自己的局部变量表查找是否有变量number存在,如果不存在再去全局变量表找。
全局变量和局部变量互不影响。