在学习计算机之前,大致需要了解一下计算机的基本构成。很多人在学习的过程中,不了解计算机的基本结构,其实计算机一般可以分为硬件结构、系统以及我们常见的应用软件。而我们学习的C语言则是广泛的运用于底层的开发,即操作系统Operation system。
在学习C语言过程中,我总结了一些基本概念,如下所示:
1、全局/局部变量:下面这串代码则是举例说明了什么是全局变量什么是局部变量,其中有人可能认为局部变量就是在main函数中定义的变量,这是错误的。同时当局部变量与全局变量冲突时,优先会使用局部变量。
2.作用域与生命周期:提到变量不得不提到局部\全局变量的作用域与生命周期。局部变量的作用域就是局部变量所在的范围,而全局变量的作用域是整个工程。局部变量的生命周期时从进入局部范围生命周期开始,出了作用域生命周期结束。全局变量的生命周期、程序的生命周期和main函数的生命周期是一样的,即全局变量在程序运行的过程中始终存在。
int g_val = 100;//全局变量:在大括号外部定义的变量
void test()
{
int a = 10;//局部变量
printf("%d\n", g_val);
printf("a = %d\n", a);//局部变量:在大括号(代码块)内部定义的变量
}
3.常量:“常量”的广义概念是:‘不变化的量’(例如:在计算机程序运行时,不会被程序修改的量;数学函数中的某一个量,例如每一个具体的圆的半径、直径数值;物理学中的靠近地面的重力加速度;真空中的光速数值;不同的微粒的各自的质量)。
常量又可以分为以下几类:1.字面常量
2.const修饰的常变量
3.#define 定义的标识符常量
4.枚举常量
#define MAX 100
int main()
{
//1.字面常量
"abcdef";
3.14;
100;
//2.const 修饰的常变量
const int num = 10;//num虽然被const修饰,但本质上还是一个变量,不能用来指定数组大小
num = 20;error:const 修饰的无法更改
printf("%d\n", num);
//3.#define 定义的标识符常量
printf("%d\n", MAX);
//4.枚举常量:可以一一列举的值,其中值无法修改 但是可以赋值
enum Sex s = FEMALE;
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
return 0;
}
4.字符串:字符串在C语言中一般存储在字符数组中,在字符串末尾处通常会有一个’\0’存在作为字符串的结束标志。在打印字符串过程中,如果不放置’\0’,printf不会停止打印,会导致字符串后面的结果未知。arr1字符数组定义的方式,在字符串末尾隐藏了一个’\0’作为结束标志,而arr2字符数组这种定义方式末尾没有’\0’,因此在打印的过程中会出现错误。
int main()
{
char arr1[] = "abc";//在字符串末尾隐藏一个\0,这个\0是字符串的结束标志
char arr2[] = { 'a','b','c'};//如果不放置\0 printf不会停止打印 c后面是什么未知
//printf("%s\n", arr1);
//printf("%s\n", arr2);
//库函数 - strlen -string length -求字符串长度
int len1 = strlen(arr1);
int len2 = strlen(arr2);//随机值
printf("len1 = %d\n", len1);
printf("len2 = %d\n", len2);
return 0;
}