大家好,我是阿亮要学会敲代码。
在本篇文章,我将跟大家分享C语言的基础知识,让大家对C语言有一个基本的了解。本文章会跟大家分享前四节的内容,剩下的内容,下一篇文章再为大家介绍。
- 什么是C语言
- 如何写出你的第一个C语言程序
- C语言的数据类型
- 常量和变量
- 字符串+转义字符+注释
- 选择语句
- 循环语句
- 函数
- 数组
- 操作符
- 常见的关键字
- #define定义常量和宏
- 指针
- 结构体
1.什么是C语言
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简 易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
对C语言的更加详细的介绍,大家可以网上搜索了解。在此,我就不一一赘述了。
2.第一个C语言
#include <stdio.h> int main() //main函数的标准写法 { printf("hello world"); return 0; }
相信大家对这个程序都非常地熟悉,这个程序应该是很多人写的第一个C语言程序。虽然简单,但是这个程序也有挺多重要的点。
程序的第一行 #include <stdio.h>
它是编译预处理命令,也就是包含stdio的这个头文件。只有包含了这个头文件,后面的printf()函数才能够使用。
注意:编译预处理命令的末尾不加分号
下面的一行程序 int main()
定义了一个名字为main的函数,该函数的返回值是整型数(int)。在C语言中,main()是一个特殊的函数,被称为主函数,任何一个程序都必须有且仅有一个main()函数,当程序运行时,首先从main()函数开始执行。
一对花括号把构成函数的语句括起来,称为函数体。该程序的函数体共有两条语句。
第一条语句 printf("hello world");
它由两部分组成:函数调用和分号。printf("hello world")是一个函数调用,它的作用是把双引号中的内容原样输出;而分号表示该语句的结束。
注意:C语言中的所有语句都必须以分号结束。程序中的所有标点符号都是英文符号!!!
main()函数的最后一条语句 return 0;
他结束main()函数的运行,并向系统返回一个整数0,作为程序的结束状态。由于main()函数的返回值是整型数,因此,任何整数都可以作为返回值。但是,按照惯例,如果返回值为0,说明程序运行正常,返回其他数字用于表各种不同的错误情况,系统可以通过检查返回值来判断程序的运行是否成功。所以在这个地方,大家最好把返回值都为0。
目前,你已经学会了第一个C语言程序!!!
3.C语言的数据类型
C语言中最常用的数据类型包括char(字符型)、short(短整型)、int(整型)、long(长整型)、long long(更长的整型)、float(单精度浮点型)、double(双精度浮点型)。
那为什么会出现这么多的数据类型呢?
因为对于不同的变量,它们所代表的含义和用处不同,所以就用不同的数据类型去定义它们。好比如,float和double都是浮点型,用于存放浮点数(实数),区别就在于double型数据占用的空间更大,精度更高,取值范围更大。以此类推,short int long和long long 也是一个道理。
那肯定有小伙伴问那这些数据类型的大小是多大呢?
好问题!!!其实每个数据类型的大小都可能不一样,想要求每个数据类型的大小,我们就要借助sizeof()这个操作符了。
代码如下:
#include <stdio.h> int main() { printf("%d\n", sizeof(char)); //1 printf("%d\n", sizeof(short));//2 printf("%d\n", sizeof(int)); //4 printf("%d\n", sizeof(long)); //4 printf("%d\n", sizeof(long long)); //8 printf("%d\n", sizeof(float)); //4 printf("%d\n", sizeof(double)); //8 return 0; } // %d打印一个十进制的的整数 // \n换行符
我们可以看到这个程序的输出结果为1 2 4 4 8 4 8。那这些数字代表什么意思呢?其实这些数字的单位是字节(Byte),是计算机内存的基本单位之一。
可能会有细心的小伙伴会发现一个问题。为什么int(整型)和long(长整型)所占的内存是一样大呢?不是说精度越高,取值范围越大,所占用的内存就越大吗?其实这是一个规定,只需要保证sizeof(long)>=sizeof(int)就可以了。
讲到这,相信各位小伙伴对C语言的数据类型也用了基本的了解了。那我们现在来学习C语言的常量和变量。
4.常量和变量
在C语言中,数据有常量和变量之分。顾名思义,其值不能被改变的量称为常量,比如血型、光速、圆周率等等。其值可以改变的量称为变量。比如身高、年龄、月份等等。
4.1常量
C语言中的常量分为以下几种:
- 字面常量
- const修饰的常变量
- #define定义的标识符常量
- 枚举常量
//常量演示 #include <stdio.h> enum Sex //enum枚举关键字 { MALE, //0 可以设置MALE的初值 FEMALE, //1 SECRET //2 }; //括号中的MALE FEMALE SECRET就是枚举常量 int main() { //字面常量演示 3.14159;//字面常量 7.28;//字面常量 //字面常量,没什么好说的,就是普普通通的常量 //const修饰的常变量 const float pai = 3.14; //pai就是const修饰的常变量,注意pai的值是不能被改变的, //否则系统就会报错,如果 想要把pai的值改变的话,可以将 //const删掉 //#define定义的标识符变量 #define MAX 728 printf("MAX = %d\n",MAX); //枚举常量 printf("%d\n",MALE); printf("%d\n",FEMALE); printf("%d\n",SECRET); //注:枚举常量默认从0开始,向下一次递增1 return 0; }
注意:上面例子上的 pai 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量。
4.2定义变量的方法
char ch='w';
int age=18;
float n=7.28;
4.3变量的命名规则
只能由字母(包括大写和小写)、数字和下划线( _ )组成。
不能以数字开头。
长度不能超过63个字符。
变量名中区分大小写的。
变量名不能使用关键字。
//错误的命名方法
int 2b=100;
int char;
//正确的命名方法
int _2b=100;
int A=1;
int a=2;
4.4变量的分类
- 局部变量
- 全局变量
#include <stdio.h> int global=2022; //全局变量 int main() { int num = 2023; //局部变量 int global = 2024; //全局变量 printf("global = %d\n",global); return 0; }
上面的程序定义了两次global,那么这个程序会不会有问题呢?答案是不会的,这个程序的输出结果为global = 2024。也就是告诉我们,当全局变量和局部变量的名字相同是,局部变量优先。
- 变量的输入与使用
#include <stdio.h> int main() { int num1,num2; int num=num1+num2; scanf("%d %d", &num1, &num2); //scanf函数可以从键盘输入数字、字符、字符串 num = num1 + num2; //因为这里是%d,所以是输入一个数字 printf("num = %d\n", num); //&取地址符 return 0; }
4.5变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
局部变量的作用域是变量所在的局部范围
全局变量的作用域是整个程序
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
全局变量的生命周期是:整个程序的生命周期。
注意:变量的作用域决定变量的生命周期
通过上面的代码和图片,我们就能够清晰地知道变量的作用域和生命周期。只要局部变量出了它的作用域,并且没有再次定义,那么程序就会报错。
以上就是这篇文章的全部内容了,如果觉得收获的话,可以点个小赞!!!
谢谢大家了!!!