前言 本篇(初识C语言)主要讲述C语言的一些基础知识,后期还会更新选择语句,循环语句,函数,数组,操作符,指针,结构体等一些知识。如果有错误的地方,还请大佬多多指教,在这里先感谢各位了。 来开启我们的C语言学习之旅吧。
1.什么是C语言
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语 言。 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超 级电脑等作业平台。 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制 定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8 日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标 准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉 字编程。 C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
2.第一个C语言程序
代码解析 1.main main为主函数,一个工程中有且仅有一个主函数,程序是从主函数中的第一行开始开始执行,执行到最后一行后程序结束。 2.printf和#include<stdio.h> printf为一个库函数,是C语言本事提供的,。库函数是把一些常用函数进行总结并放到一个文件中,printf函数的作用是在屏幕上打印东西,当使用printf函数的时候要与头文件打声招呼,可以认为我要使用你的东西。#include<stdio.h>便实现了调用printf函数。每个库函数都对应相应的头文件,当使用某一个库函数时必须要#include<相应的头文件>。 3.int int表示整形,放在main的前面,当程序结束的时候需要返回一个整形的数与之相对应。
3.数据类型
开始讲数据类型的时候来讲一下计算机的储存单位,计算机的最小储存单位是bit,简称‘位’,一个bit表示0或1两种状态。 Byte为字节,1Byte=8bit,可以说一个字节含有2的8次方种可能,即256种可能。
存储单位的大小关系: 下图为数据的类型: 出现这么多类型是为了更加丰富的表达生活中的各种值,也可以减小计算机内存的使用。
-
每个数据类型的大小都是多少呢? 使用sizeof可以来实现
注:sizeof 是一个操作符,用来计算数据类型的大小,所计算出的大小单位为字节
下面我们用sizeof去实现一下 可以看到每种类型所对用的大小
有的同学可能会问,输出的时候float和double都可以用%f。但是当用scanf函数是,double类型的要严格按照%lf,所以建议大家以后使用duuble类型的数据输出时,尽量使用%lf;
4.变量,常量
生活中有些值是不变的,例如一个人的性别,血型等等。但是有些值却是变化的,例如年龄,体重等等。
所以针对不变的量,在C语言中,用常量的概念来表示,变化的量则用变量来表示。
4.1定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = 'w';
4.2变量的分类
1. 局部变量 2. 全局变量
include <stdio.h>
int global = 2019;
int main()
{
int local = 2018;
int global = 2020;
printf("global = %d\n", global);
printf("local=%d",local);
return 0;
}
总结: 上面的局部变量global变量的定义其实没有什么问题 当局部变量和全局变量同名的时候,局部变量优先使用,可以理解为就近原则哈哈。
4.3变量的使用
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
4.4变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的
而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。 2. 全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。 2.全局变量的生命周期是:整个程序的生命周期。
4.5常量
C语言中的常量和变量的定义的形式有所差异。 C语言中的常量分为以下以下几种: 字面常量 const 修饰的常变量 #define 定义的标识符常量 枚举常量
#include <stdio.h>
enum Sex
{
MALE,
FEMALE,
SECRET
};
int main()
{
3.14;
1000;
const float pai = 3.14f;
pai = 5.14;
#define MAX 100
printf("max = %d\n", MAX);
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
return 0;
}
注: 上面例子上的 pai 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了,变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量。
5. 字符串+转义字符+注释
5.1字符串
“hello bit.\n” 这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。 注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容
#include <stdio.h>
int main()
{
char arr1[] = "bit";
char arr2[] = { 'b', 'i', 't' };
char arr3[] = { 'b', 'i', 't', '\0' };
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
可以看出当含有\0时,只会打印bit,当没有\0时,将会在bit后面在随机打印一串字符,可也得出\0是字符串的结束标志。
5.2转义字符
假如我们要在屏幕上打印一个目录: c:\code\test.c
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
return 0;
}
这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。 看下面的一些转义字符及其他们的作用 注: 在表示16进制时,超过9就用小写字母表示,如 \xab,\x3a 等 如何在屏幕上打印 ’ 和 ” ?
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));
printf("%d\n", strlen("c:\test\628\test.c"));
return 0;
}
strlen可以求字符串的长度 解析如下: \t是一个转义字符,表示一个字符。\628中的628不能表示八进制数,因为八进制数的每一位都是1~7,所以将后面的8去掉,\62中的62转换成十进制数做对应数字是50,所对应的ASCII码表的字符是2,8对应ASCII码表的一个字符,后边\t表示一个转义字符,所以该字符串的长度加起来就是14啦。 这里给大家找了一张ASCII码表,有几个比较重要的结点,例如48是“0”,65是“A”,97是“a”,(A与a中间差32,后面按照字母或者数字的顺序来推就OK)
5.3注释
1. 代码中有不需要的代码可以直接删除,也可以注释掉 2. 代码中有些代码比较难懂,可以加一下注释文字 比如:
#include <stdio.h>
int Add(int x, int y)
{
return x+y;
}
int main()
{
printf("%d\n", Add(1, 2));
return 0;
}
注释有两种风格: C语言风格的注释 /xxxxxx/ 缺陷:不能嵌套注释 C++风格的注释 //xxxxxxxx 可以注释一行也可以注释多行 建议大家使用C++风格的注释,在VS上面使用非常方便,有快捷键。
今天就先到这里了,后续还会不断更新分享,希望对大家有所帮助,喜欢的可以点赞收藏哟,那些地方觉得不好的可以在评论区告诉博主,博主目前还是个小白哈,大家一起进步。
|