引言
hellow CSDN的小伙伴大家好,从今天开始我将会在该账号中持续更新C语言知识点,希望能和大家一起学习,一起进步!!!
本篇文章只是粗略的讲解C语言的基础知识,让大家对C语言有一个大概的认识,更详细的知识点将在后续更新。
第一个C程序
但存在两个main函数时编译器就会报错具体情况如下,所以自己在定义函数名的时候要注意不要出现这样的情况。(注:本人使用的是vs2019)
数据类型
接下来糖糖给各位介绍一下C语言中的数据类型。在C语言中有7中数据类型,他们分别是:char(字符型),short(短整型),int(整型),long(长整型),long long (更长的整型),float(单精度浮点型),double(双进度符典型)。
他们所占的内存大小分别是:1字节、2字节、4字节、4字节、8字节、4字节、4字节
值得注意的是:long的内存大小定义是 long>=int 的内存大小。
我们也可以通过下面的程序来检测一下是否真确。
int main()
{
//如何计算一个类型创建的变量所占空间的大小呢?
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
常量和变量
生活中有些值是一直不会变的(比如说:血型、身份证号码、圆周率等等)C语言用常量的概念来表示。然而有些值是会变化的(比如:身高。年龄。体重等)在C语言中用变量表示
变量
C语言中把变量又分为了局部变量、和全局变量
局部变量的生命周期:进入局部变量所在的范围生命周期开始,出局部范围生命周期结束
全局变量的生命周期:和main函数的生命周期一样,与程序的生命周期一样,也就是程序的生命周期。
具体程序如下:
int a = 100;
void test()
{
printf("test:a = %d\n", a);
}
int main()
{
int a = 10;
test();
printf("main:a = %d\n", a);
return 0;
}
常量
C语言中有四种类型的常量
字面常量
字面常量主要用来给变量初始化。
int main()
{
3.14;//浮点型的字面常量
100;//整型的字面常量
return 0;
}
const 修饰的常变量
**当在变量前加上const时该变量就具有了常量的属性,它的值不能被改变,但是它并不是常量,我们可以从下面程序看出,利用数组大小的定义必须是常量的特性,当用常变量n来定义数组大小是编译器会报错,说明它并不是常量,只是具有常量的性质,值不能被改变。
int main()
{
const int a = 100;//加入const 局部变量的值不能改变
//一个变量不能被改变我们就说它具有常属性 - 不能被改变的属性
a = 200;
printf("%d\n", a);
//常变量
int n = 100;
const int n = 100;//n不是常量,只是具有常属性不能修改而已
int arr[n] = { 0 };//数组括号里需要常量
return 0;
}
**
#define 定义的标识符常量
下面程序中的MAX就是标识符常量,他的值不能被改变,当编译的时候,会把程序中的MAX都替换为100
#define MAX 100
int main()
{
int a = MAX;
int arr[MAX] = { 0 };
printf("a = %d\n", a);
//MAX = 200;//max不能被改变err
return 0;
}
枚举常量
生活中存在一些值能够被一一列举出来比如说性别、日期等等。我们以性别为例定义一个枚举常量
枚举常量如果我们没有初始化他的值,就会默认从0开始,即常量中的MALE=0,FEMALE=1,SECRET=2,初始化后,枚举变量的值就会变为初始化后的值,后面未被初始化的枚举常量的值就会变为它前面已经被初始化的枚举常量的值+1(如:SECRET=FEMALE+1=9)
enum sex
{
//枚举的可能取值。
//默认取值从 0开始若想改变可以通过赋值
MALE=3,
FEMALE=8,
SECRET
};
int main()
{
enum sex s = MALE;
enum sex x = SECRET;
printf("%d ", MALE);
printf("%d ", FEMALE);
printf("%d ", SECRET);
return 0;
}