- 1. 什么是C语言
- 2. 第一个程序介绍:(Hello world)
- 3. 数据类型
- 4. 变量与常量
- 4.1 定义变量的方法
- 4.2 变量的命名要求
- 4.3 局部变量与全局变量
- 4.4 变量的作用域和生命周期
- 4.5 常量
- 5. 字符串和转义字符
- 5.1 字符串
- 5.2 strlen函数
- 5.3 转义字符
- 6. 选择语句 (if 和 else)
- 7. 循环语句(while)
- 8. 函数
- 9. 数组
- 9.1 数组定义
- 9.2 数组的下标
- 9.3 数组的使用
- 结尾
介绍
第一篇对我来说写的较长的博客,下面就让我带大家认识一下 C语言:人与计算机交流的语言. 1. 什么是C语言
C语言是一门通用计算机编程语言,广泛应用于底层开发。 C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
C语言可以说是所有语言的母体,现在流行的语言都是由C语言衍生而出。
2. 第一个程序介绍:(Hello world)常用于编译C语言的编译器有 Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
其中我们常用的Visual Studio就是用的MSVC编译器,Linux操作系统上面常用的编译器 GCC。
#includeint main(void) { printf("Hello world!"); return 0; }
3. 数据类型#include
为C语言的库函数,我们所用的printf(打印)函数就在这个库函数里头
int表示的是函数的返回类型
main函数是整个函数的入口
()里面代表函数参数
printf函数作用为打印双引号内容
这里的return 0,默认代表主函数结束后我们返回0表示个函数正常运行,当然我们也可以返回其他整形,但是在默认情况下返回异常值 给别人带来困惑
char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数
为什么会有这么多的数据类型呢?
存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
数据类型使用举例
#includeint main() { int salary = 120; float weight = 126.3f; char ch = 'A'; return 0; }
每种数据类型大小计算方法:利用C语言中的关键字sizeof
计算出来的值并不是统一的,得看当前编译器的项目配置环境(32位,64位,86位)
每个配置环境计算出来的值各有差异,但是计算方式都是一样的,下面我们举例在32位平台下计算结果
#includeint main() { printf("%dn", sizeof(char)); // 1 printf("%dn", sizeof(short)); // 2 printf("%dn", sizeof(int)); // 4 printf("%dn", sizeof(long)); // 4 这里的long 大于等于int的大小即可 printf("%dn", sizeof(long long)); // 8 printf("%dn", sizeof(float)); // 4 printf("%dn", sizeof(double)); // 8 return 0; }
计算出来的数值单位为字节Byte:1 Byte = 8 bit;1 KB = 1024 Byte; 1 MB = 1024 KB;
1 GB = 1024 MB;1 TB = 1024 GB;
顾名思义,在C语言中可以改变的量叫做变量,不可以改变的量我们称为常量。
日常生活中,不能改变的量如有:血型,性别,圆周率,出生年月日 等等;
可以改变的量就有很多啦:薪水,年龄,体重,身高,等等。
int age = 150; float weight = 45.5f; char ch = 'w';4.2 变量的命名要求
4.3 局部变量与全局变量只能由字母(包括大写和小写)、数字和下划线( _ )组成。
不能以数字开头。
长度不能超过63个字符。
变量名中区分大小写的。
变量名不能使用关键字。
#includeint global = 2019;//全局变量 int main() { int local = 2018;//局部变量 //下面定义的global会不会有问题? int global = 2020;//局部变量 printf("global = %dn", global); return 0; }
上面的局部变量global变量的定义其实没有什么问题的!
当局部变量和全局变量同名的时候,局部变量优先使用。
作用域:作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
4.5 常量生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
3. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
4. 全局变量的生命周期是:整个程序的生命周期。
在C语言中表示常量的方法有三种:
- const 关键字修饰的常变量
- #define 宏定义的标识符常量
- enum 关键字创建的枚举常量
#include#define MAX 100 //举例 enum Sex { MALE, FEMALE, SECRET }; //括号中的MALE,FEMALE,SECRET是枚举常量 int main() { //字面常量演示 3.14;//字面常量 1000;//字面常量 //const 修饰的常变量 const float pai = 3.14f; //这里的pai是const修饰的常变量 pai = 5.14;//是不能直接修改的! //#define的标识符常量 演示 printf("max = %dn", MAX); //枚举常量演示 printf("%dn", MALE); printf("%dn", FEMALE); printf("%dn", SECRET); //注:枚举常量的默认是从0开始,依次向下递增1的 return 0; }
上面例子上的 pai 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了
变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量。
"Hello world!"
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
注:字符串的结束标志是一个 的转义字符。在计算字符串长度的时候 是结束标志,不算作字符串内容。
#includeint main() { char arr1[] = "bit"; char arr2[] = {'b', 'i', 't'}; char arr3[] = {'b', 'i', 't', ' '}; printf("%sn", arr1); printf("%sn", arr2); printf("%sn", arr3); return 0; }
以上代码打印结果为:
5.2 strlen函数当我们打印一个字符串时通常会把**‘ ’**作为结束的标识符
在第二次打印时我们没有输入字符’ ’,当输出时会一直往后找,直到遇到’ ’时才能结束因此在不属于该内存块中找到的属于一些乱码
strlen函数是用来计算字符串中** **之前出现多少个字符,遇到 *’ '*结束
在使用该函数的时候应该包含头文件 #include
#include5.3 转义字符#include int mian() { char arr1[] = "abcdef"; char arr2[] = { 'a', 'b', 'c', 'd', 'e', 'f'}; printf("%dn", strlen(arr1)); // 6 printf("%dn", strlen(arr2)); // 随机值 return 0; }
当我们想打印某个文件路径的时候例如:c:codetest.c
#includeint main() { printf("c:codetest.cn"); return 0; }
咦!为什么这么奇怪不符合我的目的啊,怎么这缺那空的。
在这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。让我们看看有哪些转义字符
所以当我们把反斜杠与某个字符相结合时就会变成转义字符
#include6. 选择语句 (if 和 else)int main() { printf("%cn", '''); //打印 ' printf("%sn", """); //打印 " printf("%dn", strlen("c:test628test.c")); //结果为:14 .其中't' , '62' 为单个字符 return 0; }
#include7. 循环语句(while)int main() { int select = 0 ; printf("下午天气预报说会下雨,你会带雨伞么?(选择:1 or 0)n"); scanf("%d" , &select); if(select == 1) printf("你不会被淋雨n"); else printf("你回来后将变成落汤鸡n"); return 0; }
在我们生活中有哪些东西是循环往复的?
例如:日复一日每天都是24小时,一天三餐不吃饭就会饿肚子,每天都是上课下课,上班下班等等这些就是循环
当然在我们C语言里面也有循环分别是 while ,do while 和 for,在这里我们先了解while后面两个我会在新的博客发布
#include8. 函数int main() { printf("去学校学习n"); int line = 0; while(line<=20000) { line++; printf("我要继续努力敲代码n"); } if(line>20000) printf("出来找到好工作n"); return 0; }
函数的特点就是简化代码,代码复用。防止main主函数过于臃肿代码量太多不好分析。
可以把函数看成一个工厂,把原料放进去,成品出来
#includeint Add(int x, int y) { int z = x+y; return z; } int main() { int num1 = 0; int num2 = 0; int sum = 0; printf("输入两个操作数:>"); scanf("%d %d", &num1, &num2); sum = Add(num1, num2); printf("sum = %dn", sum); return 0; }
9. 数组int Add(int x, int y)
{
int z = x+y;
return z;
}
int 为这个函数的类型,Add是函数名,(int x , int y)是函数参数,括号内参数一般不要超过6个
当我们想要创建一连串相同数据类型的时候是否会这样:
int a = 1; int b = 2; int c = 3; int d = 4;…
这样创建同样的类型的数据难免会不会太麻烦了
所以C语言中给了数组的定义:一组相同类型元素的集合。
9.1 数组定义9.2 数组的下标int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //定义一个整形数组,最多放10个元素
char ch[5] = { 0 }; //不完全初始化,剩余的默认会初始化为0
char ch2[] = { ‘a’, ‘b’, ‘c’}; //字符串也可以看成数组
C语言规定:数组的每个元素都有一个下标,下标是从0开始的。
数组可以通过下标来访问的。
9.3 数组的使用int arr[10] = {0}; //如果数组10个元素,下标的范围是0-9
#includeint main() { int i = 0; int arr[10] = {1,2,3,4,5,6,7,8,9,10}; for(i=0; i<10; i++) { printf("%d ", arr[i]); } printf("n"); return 0; }
打印结果为:
当然在我们使用数组的时候我们得防止数组越界问题,我们看看下面代码会出现什么状况:
#includeint main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; printf("%dn", arr[8]); printf("%dn", arr[18]); return 0; }
我们在定义此数组的时候,给定大小为[0,9],但是我们超出这个范围去访问不属于该数组的内容像arr[18]这样的被称为数组越界;
就像学校内小明和小红的书柜挨着很近,小明在没有经过同意去拿取小红书柜里的书本.这样的方法是不被认可的,对此我们应该杜绝.
希望大家能够喜欢,有不对的可以提出来,小编虚心接纳
以上就是这节全部内容,感谢大家支持!!!



