1.什么是C语言
C语言是一门通用计算机编程语言,广发用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。简单来说C语言就是人和计算机交流的计算机语言。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
2.第一个C语言程序
1、创建项目
(1)创建
(2)创建新项目
(3)配置新项目
项目名称:注意不要使用中文、特殊字符和空格。
位置:项目存放位置放在自己指定位置便于代码管理
(4)查看是否成功
(5)添加新项
(6)现在可以开始编写第一个程序
2、"Hello World"
在屏幕上打印Hello World
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
//printf (库函数)将结果打印在屏幕上
printf("Hello World\n");
return 0;
}
写好的C语言代码是文本信息,不能直接运行起来,要通过编译+链接才能形成可执行程序
(Ctrl+F5)即可完成编译+链接+运行,有些电脑需要使用(Fn+Ctrl+F5)。
C语言中main函数是程序的入口,在一个程序中有且仅有一个
3、数据类型
char 字符数据类型
short 短整型
int 整型
long 长整型
long long 更长的整型
float 单精度浮点数
double 双精度浮点数
接下来我们可以通过sizeof操作符来计算类型大小
%d 就是以十进制的形式打印一个整数
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;
}
输出结果(单位大小:字节)
4 .变量、常量
4.1定义变量的方法
类型 变量名;
类型 变量名 = 初始值;
float 的初始值不加 f 默认为 double 类型
int age;
int age = 20;
float weight = 22.2f;
char ch = 'w';
4.2变量的命名
- 只能由字母(包括大写和小写)、数字和下划线 (_)组成
- 不能以数字开头
- 长度不能超过63个字符
- 变量名中区分大小写
- 变量名不能使用关键字
- 变量名要有意义
4.3变量的分类
- 局部变量
- 全局变量
int global = 2023;
int main()
{
int local = 2024;
int global = 2024;
//此时的global的值为多少?
printf("%d\n%d", local, global);
return 0;
}
总结:
当局部变量和全局变量同名的时候,局部变量优先。
变量的使用
编写一个程序计算两个数的和
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变量的作用域和生命周期
变量创建的本质:在内存中开辟一块空间存放数据。
4.4.1作用域
作用域:作用域是程序设计概念,通常来说,一段代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
1.局部变量的作用域是变量所在的局部范围。
2.全局变量的生命周期是整个工程。
4.4.2生命周期
变量的生命周期指的是变量的创建到变量的销毁(销毁就是把申请的空间还给操作系统)之间的一个时间段。
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2.全局变量的生命周期是:整个程序的生命周期。
上图我们可以看出当num2放在变量所在局部范围外就显示错误
修改后我们可以看到能成功打印,也可以看出全局变量的作用域是整个工程。
4.5常量
C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下几种:
- 字面常量
- const修饰的常变量
- #define定义的标识符常量
- 枚举常量
观察上图我们发现const修饰的常变量不能直接修改
注:
上图示例中的num被称为const修饰的常变量,const修饰的常变量在C语言中只是在语法层面限制了变量num不能直接被改变,但是num本质上还是一个变量,所以叫常变量。
5.字符串+转义字符+注释
5.1字符串
"Hello World\n"
这种由双引号引起来的一串字符被称为字符串字面值,或简称为字符串。
注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串的内容。
int main()
{
char ch1[] = { 'a', 'b', 'c'};//[a][b][c]
char ch2[] = "abc"; //[a][b][c][\0]
int len1 = strlen(ch1);
printf("%d\n", len1);
int len2 = strlen(ch2);
printf("%d\n", len2);
return 0;
}
观察上面代码我们可以看到len2的长度为3,但是len1的长度却是35?
因为字符串的结束标志是一个\0的转义字符,而字符串的末尾隐藏了一个\0,而\0字符串的结束标志,所以len2的值为3;ch1数组既没有指定数组大小,也没有存放\0所以计算机就会一直找下去直到找到\0为止,所以len1的值也不是固定值也是随机值。
我们将上述代码修改后可以看到,len1的值和len2的值相等。
5.2转义字符
转义字符(Escape Character)
是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符
、被当作特殊用途而需要转换回它原来的意义的字符
。而转义字符
的转义
是指字符已经被转换了意义。
例如我们在屏幕上打印一个目录: c:\madin\test.c
我们会发现\t消失不见,这又是为什么?
观察下表可知\t是水平制表符(即是键盘TAB键),所以无法打印出\t。
转义字符 | 释义 |
---|---|
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量' |
\" | 用于表示一个字符串内部的双引号" |
\\ | 用于表示一个反斜杠,防止它被解释成为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进制符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直指标符 |
\ddd | d d d表示1~3个八进制的数字。 |
\xdd | d d表示2个十六进制的数字。 |
能正确计算下面字符串的长度,就掌握了转义字符。
#include <string.h>
int main()
{
printf("%d\n", strlen("c:\test\x16\568\test.c"));
return 0;
}
答案是15哟!!!
5.3注释
- 代码中有不需要的代码可以直接删除,也可以注释掉。
- 代码中有些代码比较难懂,可以加文字注释,便于理解代码。
注释的风格有两种:
- C语言注释风格: /*xxxxx*/
缺陷:不能嵌套注释
- C++风格的注释: //xxxx
可以注释一行也可以注释多行
6.选择语句
选择语句顾名思义就是提供选择。
选择语句的三种格式
6.1if
if (表达式)
{
语句块1;
}
当只有 if 的时候,表达式为真就执行语句块1,否则就跳过语句块的内容。
6.2if - else
if (表达式)
{
语句块1;
}
else
{
语句块2;
}
当是 if…else 的时候,表达式为真就执行语句块1,表达式为假就执行语句块2。
6.3if - else if - else
if (表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
else
{
语句块3;
}
当表达式1为真的时候就只执行语句块1的内容,其余语句块不执行。
当表达式1为假并且表达式2为真的时候就只执行语句块2的内容,其余语句块不执行。
当表达式1和表达式2都为假的时候执行语句块3的内容,其余语句块不执行。
else if是可以根据情况自己增加的,并不是只能有一个else if。
但是需要注意的是if可以单独出现,else不可以单独出现。
int main()
{
int flag = 0;
printf("今天会敲代码嘛?(选择1or0):");
scanf("%d", &flag);
if (0 == flag)
{
printf("今天不敲代码,休息\n");
}
else
{
printf("今天必须好好敲代码,做个卷王\n");
}
return 0;
}
6.4swith语句
switch语句格式如下:
switch(表达式1)
{
case 表达式2:
语句块2;
break;
case 表达式3:
语句块3;
break;
case 表达式4:
语句块4;
break;
……
default:
语句块n;
break;
}
int main()
{
int num = 0;
printf("请输入选择:");
scanf("%d", &num);
switch(num)
{
case 1:
printf("唱歌\n");
break;
case 2:
printf("游泳\n");
break;
case 3:
printf("跳舞\n");
break;
case 4:
printf("跑步\n");
break;
default:
printf("输入有误");
break;
}
return 0;
}
如有不对不妥之处,欢迎大家批评指正。