1.什么是C语言呢?
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
2.第一个C语言程序:
#include<stdio.h>
int main()
{
printf("hello world\n");
printf("hello bittt\n");
return 0;
}
其中main函数是一个程序的入口,一个工程里面有且仅有一个main函数。
3.数据类型
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点型
double //双精度浮点型
- 为什么会有这么多的类型?每种类型的大小是多少?
#include<stdio.h>
int main()
{
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(long long));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));
return 0;
}
运行结果如下:
之所以存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
类型的使用:
char ch='w';
int weight=120;
int salary=20000;
3.变量、常量
生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)有些值是可变的(比如:年龄,体重,薪资)。不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示
3.1定义变量的方法
int age=20;
float height=1.89f;
char ch='a';
3.2变量的分类
- 局部变量
- 全局变量
#include<stdio.h>
int local=2023; //全局变量
int main()
{
int global=2022; //局部变量
printf("%d\n",global);
int local=20; //这样定义会不会有问题?
printf("%d\n",local);
return 0;
}
//当局部变量和全局变量命名冲突时,局部优先。
//上面局部变量的lacal定义没有问题!
3.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;
}
///scanf是一个库函数,可以从键盘接收数据
//scanf
//strcpy
//strcat 这些函数,VS都会提示不安全
//为了能够正常使用,我们在.c文件的第一行,加上:#define _CRT_SECURE_NO_WARNINGS 1
//就可以了
//为了一劳永逸的解决以后的问题
//我们可以在newc++file.cpp 这个文件中加入:#define _CRT_SECURE_NO_WARNINGS 1
//以后新建的文件中都会自动加上:#define _CRT_SECURE_NO_WARNINGS 1
//
3.4变量的作用域和生命周期
- 作用域:
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
//int main()
//{
// {
// int a = 100;
//
// }//代码块
// //a此时是一个局部变量,只能在上面代码块中访问
//
// printf("%d\n",a); //此时编译器会报错,打印不出a的值,因为一个局部变量在外不能进行访问
// return 0;
//}
//
int a = 10;
int main()
{
printf("%d\n", a);
return 0;
}
//此时a是一个全局变量,可以打印出a的值
- 生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。
//int main()
//{
// {
// int a = 100; //a的声明周期就是从{到}的部分
//
// }
//
// return 0;
//
//}
//
int a = 10;
int main()
{
printf("%d\n", a);
return 0;
}
//此时a的生命周期是整个项目
3.5 常量
C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
#include<stdio.h>
int main()
{
//字面常量
//999
//'w'
//55.8
//const修饰的常变量
//常量性:
//const int a=10;
// a=20; //错误!此时编译器会报错,a不可修改则const所修饰的a是一个常量
//变量性:
//const int n=10;
// int arr[n]={0}; //错误!此时vs下编译器还是会报错,证明a此时是一个变量
return 0;
}
//上面例子上的 a 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了
变量 a不能直接被改变,但是 a 本质上还是一个变量的,所以叫常变量。
// #define 定义的标识符常量
//#define M 100
//
//int main()
//{
// int arr[M] = { 0 };
// printf("%d\n", M);
// //M = 200;//err
// return 0;
//}
//枚举常量
enum color
{
red; //0
pink; //1
blue; //2
green; //3
};
int main()
{
enum color a=blue;
printf("%d\n",red);
printf("%d\n",pink);
printf("%d\n",blue);
printf("%d\n",green);
red=100;//错误的!常量不能被改
return 0;
}