目录
1.什么是C语言
1.1C语言
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
1.2ANSIC标准
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSIC,作为C语言最初的标准。C语言是一种面向过程的语言,与c++,Java等面向对象的语言有所不同。
1.3编译型语言
c语言和c++是通过编译器编译然后通过链接器链接最终形成一个可执行程序,这是一个非常复杂的过程,编译型语言可以脱离语言环境存在,具有较好的执行效率,而python等解释型是通过解释器逐条执行的,解释型语言具有良好的平台兼容性,在任何环境中均可执行,但解释型语言必须预先安装解释环境,可以快速实现代码的修改。
1.4C语言常用的编译器
其编译器主要有Clang、GCC(Linux平台中的)、WIN-TC、SUBLIME、MSVC(vs集成开发环境中的c编译器就是这个)、Turbo C等。
2.第一个C语言程序
#include<stdio.h>//引用标准输入输出的头文件
//标准的主函数写法
int main()//main是主函数
{
printf("hello world");//printf是一个函数是按照一定的的格式将数据打印标准输出也就是屏幕上
return 0;
}
main是一个函数,它是C语言的主函数,main函数是c语言程序的入口,C语言的执行是从主函数开始的。#include<stdio.h>的意思是包含stdio这个头文件,stdio是标准输入输出,std--标准,i--input(也就是输入),o--output(也就是标准输出)。return 0;意思是函数返回整数0,在约定俗成中如果函数正常运行就返回0,printf是一个库函数专门用来打印数据的。
3.C语言基本的数据类型
C语言有很多种数据类型今天我们要认识的是常见的内置类型,诸如:
int main() { char i;//字符型 short q;//短整型 int q;//整形 long y;//长整形 long long n; //长长整形 double d;//双精度浮点型 float f;//单精度浮点型 return 0; }
3.1 为什么会存在如此多的数据类型
因为在我们生活中存在各种各样的需求比要记录商品的价格可能就需要浮点型的变量,(为什么叫做浮点型呢,因为小数在表示成x.xx*10^i时小数点是可以浮动的所以叫做浮点型,比如1.23*10^1可以写成0.123*10^2)
3.2每种类型的大小
int main()
{
printf("%zu\n", sizeof(char));//sizeof是操作符用来求变量或者类型的大小
printf("%zu\n", sizeof(short));//zu是专门用来打印sizeof求的变量或者类型的大小的
printf("%zu\n", sizeof(int));
printf("%zu\n", sizeof(long));
printf("%zu\n", sizeof(long long));
printf("%zu\n", sizeof(float));
printf("%zu\n", sizeof(double));
return 0;
}
sizeof是操作符用来求变量或者类型的大小用字节来表示,zu是专门用来打印sizeof求的变量或者类型的大小的。
由此可以看出每种类型的大小不尽相同,在计算机中数据都是以二进制存储的,一个字节有八个比特位,每种类型的大小不同意味着可以存储的数据的范围也就是不同的这样就可以适应生活中不同的场景。可以灵活的进行使用不同的类型来达到预期效果。
4.常量和变量
4.1变量和常量在生活中的意义
生活中有些值时不变的(比如圆周率,血型,身份证号码等)。有些值是可变的(比如年龄,体重,薪资)。不变的值在C语言中用常量来表示,可变的量在C语言中用变量来表示
4.2定义变量的方法
int main()
{
int a = 0;//定义变量并初始化
char c = 's';
double f = 5.5;
return 0;
}
定义变量的本质是向内存中申请空间来存放变量的值,如果不对变量进行初始化,变量值中就保存着随机值,这样不太好,所以建议定义变量的时候对变量进行初始化。
4.3变量的分类
按照变量作用域和生命周期的不同分为局部变量和全局变量。
4.4变量的使用
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d %d", &num1, &num2);//从屏幕中获取两个整数
int sum = num1 + num2;//相加
printf("%d \n", sum);//输出结果到屏幕上
return 0;
}
scanf("%d %d", &num1, &num2);//从屏幕中获取两个整数,printf()是一个库函数,其作用是从标准输入(键盘)上获取数据存储到变量中,scanf的参数部分要加&(取地址符)。int sum = num1 + num2;//相加---计算两个数的和,printf("%d \n", sum);//将两个数的和输出结果到屏幕上。
5.局部变量和全局变量作用域和生命周期
5.1局部变量和全局变量的作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
局部变量的作用域是局部变量所在的{ },全局变量的作用域是整个程序,比如:
#include<stdio.h>
int main()
{
{
int a = 3;
}
printf("%d ", a);//此时将a打印到屏幕上会报错,
}
此时将a打印到屏幕上会报错,因为a的作用域是a所在的大括号而printf函数打印a时已经在a所在的大括号之外了,也就是在变量的作用域外面对变量进行操作,所以程序会报错。
#include<stdio.h>
int main()
{
int a = 3;
{
printf("%d ", a);//此时打印a不会报错
}
printf("%d ", a);
}
此时打印a不会报错因为变量a所在的作用域是外面的这个大括号。
#include<stdio.h>
int a = 3;
int main()
{
{
printf("%d ", a);
}
printf("%d ", a);//此时a是全局变量打印a不会报错
}
此时a是全局变量打印a不会报错,全局变量的作用域是整个程序。
extern 意思是声明外部符号,从这个例子可以看出全局变量的作用域是整个程序 。
5.2局部变量和全局变量的生命周期
生命周期:
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
局部变量的生命周期是进作用域生命周期开始,出作用域生命周期结束。全局变量的生命周期就是整个程序的生命周期。