2. C语言核心语法

1. 注释

什么是注释?

注释是在源代码中添加说明信息,它是写给程序员看的说明文字,编译器会完全忽略注释内容,不参与编译。

主要作用: 增加代码的可阅读性

C语言的两种注释方式

  1. 单行注释
  • 语法:以//开头,后面写上注释内容
  • 特点:只能注释一行内容
  • 适用场景:简短说明、行尾注释
c 复制代码
// 我是单行注释
  1. 多行注释
  • 语法:以/*开头,以*/结束,中间写上注释内容
  • 特点:可以跨越多行
  • 适用场景:函数说明、大段文字描述、临时禁用代码块
c 复制代码
/*
	我是多行注释
	这是第二行
	这是第三行
 */

用于代码中如下:

c 复制代码
// 预处理
#include <stdio.h>

// 程序入口
int main(void)
{
	// 输出文本
    printf("hello world!");
	/*
	  程序的结果
	  0为正常停止
	  非0为异常停止
	*/
    return 0;
}

快捷键

关于注释的快捷键是组合快捷键,单行注释,把鼠标定位到注释那一行(即点一下那一行,有个输入的竖杆,一闪一闪的);多行注释要选中需要注释的内容再操作快捷点。

  1. 注释快捷键: Ctrl-K + Ctrl-C
  2. 取消注释快捷键:Ctrl-K + Ctrl-U

注:写注释就像给别人(包括未来的自己)写使用说明书。好的注释应该解释"为什么这样做",而不是重复"代码在做什么"。

2. 关键字

关键字就是C语言中被赋予特定含义的单词

特点:

  1. 关键字都是小写的,例如int不能写成Int或INT。
  2. 不能将关键字用作变量名、函数名等标识符。(这个后面再说明)
  3. 编辑器会把关键字用不同的颜色标出来。
c 复制代码
#include <stdio.h>
// int 关键字:表示整数,main函数的返回类型为整数
int main()
{
	
    printf("hello world!");
    // return 关键字:函数返回一个值
    return 0;
}

C语言的关键字有30多个,我们不必死记硬背,学到后面都会接触到,慢慢掌握。

3. 常量

什么是常量?

定义 :C语言中的常量是指在程序运行过程中其值不会改变的量。
特点:一旦定义,值就固定不变

常量的类型

  1. 整型常量:正数,负数,0 ;(如:19 20
  2. 实型常量(浮点型常量):
    • 小数形式,所有带小数点的数字 ;(如:0.33 18.6
    • 指数形式,(如:1.23e-21.23e3
  3. 字符常量:用单引号 括起来字母、数字、英文符号 。注:字符常量只能是一个字符 。转义字符也是字符常量,例如'\n'(换行)、'\t'(制表符)
  4. 字符串常量:用双引号 括起来的一串字符 ,例如 "Hello, world!"。字符串常量在内存中以空字符'\0'结尾。

注:

  1. 实型常量小数点前后为 0,可以省略

    • .03 等同于 0.93
    • 18. 等同于 18.0
  2. 指数形式(科学计数法)

    • 整型常量 1230 用科学计数法1.23e3表达时就会变成实型常量。
    • 因为 科学计数法 是一个计算过程,要经过计算才能得出他的值是 1230
  3. "123"123哪个可以用来计算

  • 答案是123
  • 第一个是字符串常量,它有双引号,不可用于计算
  • 第二个是整型常量,表示数字类型,才能用于计算

输出常量

我们已经知道了上面的四种常量类型,但我想把他打印出来,能直接输入吗,如图

答案是不能,会报错,为什么说"printf": 形参和实参 1 的类型不同"

因为 printf()函数 它的参数格式是这样的:printf("格式字符串", 参数X, 参数Y, ...);

  • 格式字符串:说明我们第一个参数只能是字符串类型,那么我们想要打印别的常量类型应该怎么办呢?

  • 我们可以使用格式字符串中的格式说明符来指定参数的类型和输出的格式。

  • 什么是格式说明符

    格式说明符是格式字符串中以%开头的特殊标记

格式说明符 写法 单词
整型 %d decimal
实型 %f floating-point
字符 %c character
字符串 %s string
  • 格式说明符可以干嘛
    它们告诉printf:
    • "这里要插入一个值"
    • "这个值应该按照什么类型和格式来显示"
c 复制代码
// 格式字符串中的 %d 就是一个格式说明符,在这里起到一个占位的作用
// 它说:"这里要插入一个整数"
// 25 就是插入进去的值
printf("我的年龄是:%d 岁", 25) // 输出:我的年龄是:25 岁

总结一下,为什么要写%d?

  1. 固定规则:printf()函数的第一个参数必须是一个格式字符串。这个字符串定义了最终的输出样式和内容类型,它本身是固定不变的。
  2. 占位与声明 :为了在固定的格式字符串中动态地插入变量值,我们使用以 %开头的格式说明符 (如 %d)。%d在这里扮演了两个关键角色:
    • 占位符:它在格式字符串中"占了一个位置",告诉程序"这里将来要放入一个值"。
    • 类型声明:它明确声明了这个位置要放入的值是一个整型 数据。这确保了程序能以正确的方式(如十进制整数格式)来解读和输出后面的变量。
  3. 动态代入:从第二个参数开始,我们可以按顺序传入与格式说明符匹配的变量。程序执行时,会依次用这些变量的值 替换掉格式字符串中对应的格式说明符,从而实现了在固定模板中灵活输出动态内容。
c 复制代码
#include <stdio.h>
int main()
{
    printf("%d", 10); // 输出一个整数
    printf("%f", 1.23); // 输出一个小数
    printf("%c", 'a'); // 输出一个字符
    // 输出字符串有两种方式
    printf("Hello World!"); // 方式1
    printf("我的名字为:%s", "吃西瓜的年年"); // 方式2
    return 0;
}
  • 输出多个常量类型

    输出多个常量类型时,格式字符串中的说明符(占位符)必须与后续参数一一对应。

    这是最重要的原则。printf会严格按照格式字符串中 %说明符的顺序,去逐个匹配后面的参数。

    • 顺序对应:第一个 %对应第二个参数,第二个 %对应第三个参数,以此类推。
    • 类型对应:说明符必须与参数的数据类型严格匹配。
c 复制代码
#include <stdio.h>

int main() {
    printf("年龄:%d,成绩:%f,等级:%c,姓名:%s", 20, 95.5, 'A', "张三");
    return 0;
}
// 输出:年龄:20,成绩:95.500000,等级:A,姓名:张三
  • 输出换行
    在C语言中,输出换行可以通过转义字符来实现。换行符是\n,它用于在字符串中表示换行。当printf函数遇到\n时,它会从下一行开始继续输出。转义字符是填在第一个参数(格式字符串)里面的。
c 复制代码
#include <stdio.h>

int main()
{
	printf("年龄: %d\n", 25 );
	printf("姓名: %s\n", "吃西瓜的年年");
	return 0;
}

运行结果:

除了换行符,C语言中还有一些常用的转义字符,下面列出一些常见的:

  1. \n:换行(Newline),将光标移动到下一行的开头。
  2. \t:水平制表符(Tab),将光标移动到下一个制表位,通常相当于8个空格,但取决于环境设置。
  3. \\:反斜杠(Backslash),用于输出一个反斜杠字符。
  4. \":双引号(Double quote),用于在字符串中输出双引号,而不会终止字符串。
  5. \':单引号(Single quote),用于在字符常量中输出单引号。
  6. \0:空字符(Null character),代表字符串的结束。
  7. \b:退格(Backspace),将光标回退一个字符。
  8. \r:回车(Carriage return),将光标移动到当前行的开头,不换行。
  9. \f:换页(Form feed),用于打印机换页,在终端上可能会清屏或换页。
  10. \a:响铃(Alert),产生一声蜂鸣或系统警告声。

4. 变量

什么是变量

变量是程序中用于存储数据的基本单元,可以将其想象成一个有名字的"容器",用于存放各种类型的数据。

想象一下现实生活中的储物柜:

  • 每个储物柜有一个名字(变量名)
  • 可以存放特定类型的物品(数据类型)
  • 里面的物品可以更换(重新赋值)
  • 但柜子的大小和用途是固定的(数据类型决定)

在项目中,经常发生改变的数据可以定义为变量。(淘宝商品的价格阿,收藏数量啊,未读消息等等)

变量的基本概念

  1. 变量声明语法

数据类型 变量名;

c 复制代码
// 数据类型 变量名;
int a;
// int 是 数据类型(整型), a 是变量名

注:记得加英文的分号。

  1. 变量命名规则
  • 只能包含字母、数字和下划线
  • 不能以数字开头
  • 不能使用C语言关键字(如int, if, for等)
  • 区分大小写

基本数据类型

基本的数据类型除了int还有哪些呢?

变量的使用

  1. 赋值/修改值
c 复制代码
// 声明变量。要声明变量才能赋值,不然会报错。
// 因为声明变量就是在给你的内存开辟空间,这块空间用来存放值。
// 没有声明变量,系统找不到这块空间,会报错。
int a;
// 给变量赋值。
// 如果没有赋值,直接打印出来也会报错。要先赋值才能使用。
a = 10;
// 修改变量的值
a = 20;
// 最终输出结果为 20。以最后修改的结果为准。

我们也可以把声明变量和赋值写在一起

c 复制代码
int a = 10;
  1. 使用变量中记录的值
c 复制代码
int a = 10;
int b = 20;
int c = a + b; // 参与计算
printf("%d\n", c) // 输出打印

注:

  1. 变量名不允许重复定义,不然会报错
  2. 一条语句可以定义多个变量,中间用逗号隔开,结尾用分号
c 复制代码
int a = 10, b = 20, c = 30;
// 等同于
// int a = 10;
// int b = 20;
// int c = 30;
  1. 变量在使用前一定要进行赋值;见上面的 变量的使用

ps: 在 visual c++ 中,要把声明放在最前面,不然会报错。vs 可以放在任意位置。

正确做法:

相关推荐
代码雕刻家2 小时前
1.8.课设实验-数据结构-哈夫曼树的建立与应用
c语言·数据结构
无限进步_3 小时前
寻找数组中缺失数字:多种算法详解与比较
c语言·开发语言·数据结构·算法·排序算法·visual studio
缘三水3 小时前
【C语言】13.指针(3)
c语言·开发语言·指针·语法
!停3 小时前
深入理解指针3
c语言
赖small强3 小时前
【Linux C/C++开发】深入解析 Linux C/C++ 中的 Deferred Crash (延迟崩溃)
linux·c语言·c++·asan·core dump·延迟奔溃·mprotect
代码雕刻家4 小时前
1.10.课设实验-数据结构-查找-机票查询
c语言·数据结构·算法
云和数据.ChenGuang7 小时前
Ascend C 核心技术特性
c语言·开发语言
CQ_YM15 小时前
数据结构之队列
c语言·数据结构·算法·
sinat_6020353616 小时前
翁恺 6.3.1逻辑运算-函数
c语言