目录
前言
暗号:小比特,大梦想。
通过本章学习,我们可以了解C语言的基础知识,对C语言有一个大概的了解;
所有的代码都在VS2022上书写;
一.C语言简介
(一)C语言的定义(什么是C语言?)
1.C语言是一门面向过程的计算机编程语言,广泛应用于底层开发;
2.人和计算机交流的计算机语言(通过写C语言代码与计算机进行沟通);
(二)C语言标准语法(ANSI C)
C89 C90 C99 C11...
当前最常用的还是C89 C90。
二.第一个C语言程序
//1. 写出main函数
//2. 使用printf函数打印
// printf是一个库函数,库函数的使用需要包含有文件
// stdio.h
//3. 包含头文件
//4. 运行代码:ctrl+f5 或者 fn+ctrl+f5
#include<stdio.h>
int main()
{
printf("hehe\n");
return 0;
}
(一)主函数-main函数
1.主函数是程序执行的入口;C语言程序是从main函数的第一行开始执行的;
2.C语言代码中必须有且只有一个主函数,一个工程(项目)中可以有多个.c文件(源文件),但是多个.c文件中只能有一个main函数;
3.主函数标准基本格式
int main()
{
...; //各类语句
return 0;
}
(二)库函数
1.库函数的定义
C语言标准库提供的函数,可以直接使用,比如printf函数,不需要再定义;使用库函数,需要头部声明包含头文件,不同的库函数在不同的头文件中;
声明格式:#include<头文件名>
2.头文件stdio.h-包含标准输入输出函数
(1)printf函数-输出函数,在控制台上打印输出数据
用法:
#include<stdio.h>
int main() {
int a = 1;
//第一种 不带输出参数
//使用格式:printf("xxxx");
//打印输出 xxx
printf("我爱你\n"); //不带输出参数、格式
printf("love you\n"); //不带输出参数、格式
printf("\n"); // \n转义字符,表示输出到这儿换行
//第二种 带输出参数,输出格式
//使用格式:printf("对应输出格式xxx",输出参数);
//打印输出 输出参数xxx
printf("%d\n",a); //带输出参数、格式
//一个输出参数对应一个输出格式,从左到右一一对应
printf("a=%d\n", a); //带输出参数、格式
printf("a=%d,%d\n", a,5); //带输出参数、格式
//注:即把参数a转变成对应的输出格式(%d)输出
return 0;
}
(2)scanf函数-输入函数
注:VS编译器不能识别scanf函数,需要在头部声明(源文件第一行):
#define _CRT_SECURE_NO_WARNINGS 1(数字可加可不加)
#include<stdio.h>
int main()
{
int a = 0;
//单个输入
//scanf("输入格式", &变量名); &变量名=变量的地址
//按""内的输入格式输入相应的数据到对应的地址(赋给变量等等),回车输入完成
scanf("%d", &a);
printf("a=%d\n", a);
//多个输入
//scanf("输入格式 输入格式", &变量名,&变量名);
//按""内的输入格式输入相应的数据到对应的地址(赋给变量等等)
int b = 0;
int c = 0;
scanf("%d %d", &b, &c); //输入时:输入一个整数后,按空格,再次输入,然后回车输入完成
printf("a=%d,c=%d\n", b,c);
scanf("%d,%d", &b, &c); //输入时:输入一个整数后,按逗号,再次输入,然后回车输入完成
printf("a=%d,c=%d\n", b, c);
return 0;
}
注:写代码是不能出现中文符号;
三.数据类型
(一)C语言内置的数据类型
1.整型
(1)short //短整型
(2)int //整型
(3)long //长整型
(4)long long //更长的整型,C99里的标准;
2.浮点型(小数类型)
(1)float //单精度浮点型
(2)double //双精度浮点型
3.字符型(本质上也属于整数类型)
char //字符数据类型
字符串是用字符数组来存储;
注:C内置的数据类型一共有7种;
(二).数据类型的大小
数据存放在内存中,不同的数据类型占用不同的内存大小;用数据类型创建变量,存储数据;
1.输出格式
%d -打印10进制的整数
2.数据类型的大小计算
- 操作符sizeof:计算数据类型或者参数所占内存空间的大小,单位为字节,输出格式为%zd(推荐),也可以用%d
用法:
使用格式
sizeof(X) -会返回一个整数
X为参数或者数据类型
#include<stdio.h>
int main()
{
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(short));
printf("%zd\n", sizeof(long));
printf("%zd\n", sizeof(long long));
printf("%zd\n", sizeof(float));
printf("%zd\n", sizeof(double));
printf("%zd\n", sizeof(char));
printf("%zd\n", sizeof(1.0));
printf("%zd\n", sizeof(1));
return 0;
}
总结:
整型:short-int-long-long long 2-4-4-4
浮点型:float-double 4-8
字符型:char 1
注:sizeof(long)>=sizeof(int),long有时候是4也有时候是8,取决于编译器
四.变量和常量
(一)变量
1.定义:
- 变量:其值可以被改变
- 常量:其值不可以被改变
2.变量名的命名规则(变量的命名最好有意义,可阅读性好)
- 由字母(大小写)、数字、下划线组成,字母区分大小写;
- 变量名首位不能是数字,变量名不能是关键字,变量名长度不能超过63个字符;
注:关键字:C语言设定好的符号,有自己的意义;
3.变量的定义和初始化
定义格式
数据类型 变量名;
int age:
定义变量的时候,最好初始化,初始化就是赋一个初值;
数据类型 变量名=初始化值;
int a=1;
char b='a';
#include<stdio.h>
int main()
{
int a = 0;
float b = 1.0f; //编译器输入小数为默认为double类型,需要在后面加上f
double c = 1.0;
char d = '0'; //输入字符时,使用'字符'
scanf("%c", &d); //使用scanf输入时,最好先输入字符,防止无法正确输入
scanf("%d", &a); //屏幕上输入的时候不用写''
scanf("%f", &b);
scanf("%lf", &c);
printf("%c\n", d);
printf("%d\n", a);
printf("%f\n", b); //浮点数据类型默认打印输出小数点后6位
printf("%.1f\n", b); //%.1f表示:打印输出单浮点数类型,小数点保留1位
printf("%.3f\n", b);
printf("%lf\n", c);
printf("%.4lf\n", c);
return 0;
}
- 打印输出格式总结(待补充)
%d 打印输出10进制数
%c 打印输出一个字符
%f 打印输出小数(单精度)
%lf 打印输出小数(双精度)
%.1f 打印输出小数,留1位小数位
%zd 打印输出sizeof操作数返回值
%s 打印输出字符串
注:默认输出小数点后6位
4.变量的分类
(1)全局变量:定义在函数外的变量,最好定义在使用的函数前面,防止未识别;
(2)局部变量:定义在函数内的变量,即大括号内部,其只能在函数内部使用;
#include<stdio.h>
int a = 1; //全局变量
int main()
{
int b = 2; //局部变量
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
注:当局部与全局变量重名时,采用就近原则,局部变量优先;
- 练习:输入2个整数,计算他们的大小
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
//输入
scanf("%d %d", &num1, &num2);
//计算
sum = num1 + num2;
//输出
printf("%d\n", sum);
return 0;
}
5.变量的作用域和生命周期
1.作用域(scope):(一个名字)变量的有效范围
(1)全局变量:整个工程
定义一个全局变量,定义处下面的所有范围都可以使用这个全局变量;
注;全局变量的跨文件使用,当其他源文件想要使用这个变量的时候,可以使用关键字extern
关键字extern:用来声明外部符号的,以便跨文件使用变量和函数等;
使用方法:头部声明
extern 数据类型 变量/函数名;
(2)局部变量:局部变量所在的局部范围(一般指最近所在大括号内),一般在定义的大括号内使用;在对应的函数体内;