C语言作为编程世界的基石,掌握其核心概念是每位程序员的必修课。本文将结合代码示例与详细注释,带你深入理解C语言的基础语法、数据类型、输入输出、内存管理等内容,助你从零开始构建扎实的编程能力!
一、C语言基础概念
1.源文件与头文件
.c文件叫源文件,包含程序逻辑.h文件叫头文件,包含函数声明、宏定义等编辑器:编写代码;编译器:将代码转换为可执行文件test.c --> 编译+链接 --> test.exe
2.第一个C程序
#include <stdio.h> // 包含标准输入输出库(#include:包含头文件;<>:从系统路径查找;std:standard;i:input;o:output)
int main() { // main函数是程序入口,且一个文件中只能有一个
printf("Hello World, 早上好!"); // 打印输出
return 0; // 程序正常结束
}
3. 数据类型与内存
基本类型:
d或i:以十进制形式输出整数-->对int
ld:以十进制形式输出整数-->对long int
lld:以十进制形式输出整数-->对long long int
o:以八进制形式输出无符号整数-->对int
x或者X:以十六进制输出无符号整数,小写x控制字符输出0~9和小写字符a~f(97~122);大写字符X输出0~9和大写字符A~F(65~90)-->对int
u:以十进制形式输出无符号整数-->对unsigned int
f:以小数形式输出单,双精度实数-->对 float
lf:以小数形式输出单,双精度实数-->对 double
e或E:以指数形式输出单,双精度实数。e控制符以e表示底,E控制符以E表示底
c:输出单个字符-->对char
s:输出字符串-->对char
控制字符长度
h:修饰整型类型(i,d,o,u,x,X)以短整型形式显示数据
l:修饰整型类型(i,d,o,u,x,X)以长整型形式显示数据eg:ld
基本数字类型:
1.char(单字节整数),占用字节:1,数据范围:-2^7 ~ 2^7——1
2.int(整数),占用字节:4,数据范围:-2^31 ~ 2^31——1
3.float(单精度浮点),占用字节:4,数据范围:-3.4*10^38 ~ 3.4*10^38
4.double(双精度浮点),占用字节:8,数据范围:-1.7*10^308 ~ 1.7*10^308
类型修饰符:
1.signed:修饰整型,表示有符号整型。eg:signed int == int
2.unsigned:修饰整型,表示无符号整型。
3.short:修饰int类型,表示短整数。占两个字节,范围-2^15 ~ 2^15——1。eg:short unsigned int表示占两个字节的无符号整数,范围0 ~ 2^16——1
4.long:修饰int类型或者double类型,表示长整数。long int == int,long long int==long long占八个字节内存;修饰double类型,表示占有12个字节浮点数
补充:
1兆 = 1mb = 1024kb = 1024 * 1024个字节;1字节 = 8bit
int 整型4个字节 所以int有4*8 = 32bit (可表示-2^31~2^31的数子,第一位是符号位
%表示打印sizeof的返回值
二、输入输出控制
1. printf格式化输出
常用占位符:
2. 宽度与精度控制
//width常用于数据显示宽度控制
#include<stdio.h>
int main()
{
printf("%10d %2d",2000,3000);//当前面空出多余的显示宽度回补充空格;当显示宽度小于要打印的数字,将自动增加显示宽度
//输出结果: 2000 3000
return 0;
}
//.precision数据显示精度控制
#include<stdio.h>
int main()
{
printf("%.2d\n%20.3f\n",2000,12345.6);//d不会影响结果,只有浮点型f会发生改变
//输出结果如下:
// 2000
// 12345.600
return 0;
}
//flags标志控制符
#include <stdio.h>
int main()
{
printf("%-10d\n",100);//控制符“-”:结果左对齐,右边空格。默认结果是右边对其,左边填空格。
//输出结果:100
printf("%+d\n",100);//控制符“+”:输出符号(正或负)
//输出结果:+100
printf("%05d\n",100);//控制符“0”:输出前面补上0,直到占满指定列宽为止(这里列宽为5)
//输出结果:00100
printf("%x %#x\n",100,100);//控制符“#”:使用类型是o,x,X时增加前缀0,0x,0X;使用类型是e,E,f时,一定要使用小数点
//输出结果:64 0x64
return 0;
}
#include<stdio.h>
int main()
{
int b;
b = 1/2;//只会取整
printf("%f\n",b);//输出结果:0.000000
b = 1.0/2.0;//b类型未变
printf("%f\n",b);//输出结果:0.000000
float a;
a = 1/2;//只会取整
printf("%f\n",a);0.000000
a = 1.0/2.0;
printf("%f\n",a);//输出结果:0.500000
return 0;
}
3. scanf输入
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b); // 注意:变量前需加&(取地址符)
printf("和为:%d\n", a+b);
三、变量与内存管理
1. 变量声明与初始化
int a = 10; // 初始化为10
int* p = NULL; // 指针初始化为空
2. 作用域与生命周期
- 全局变量:定义在函数外,作用于整个文件。
- 局部变量:定义在函数内,作用域仅限于当前代码块。
int globalVar = 100; // 全局变量
void func() {
int localVar = 50; // 局部变量
// 此处可访问globalVar和localVar
}
int main() {
// 此处只能访问globalVar,无法访问func中的localVar
return 0;
}
3. 指针与内存
int num = 5;
int* ptr = # // 指针指向num的地址
*ptr = 10; // 通过指针修改num的值为10
四、高级特性与技巧
1. 转义字符
常用转义字符:
- "\n"表示:回车,换行
- "\t"表示:水平制表符(4或8个空格)
- "\""表示:显示英文的双引号
- "\\"表示:显示反斜杠
- "\0"表示:字符串结束
- "\'"表示:字符常量
- "\a"表示:警告字符,鸣响
- "\b"表示:退格
- "\r"表示:回车
- "\ddd"表示:1~3个八进制的数字
- "\xdd"表示:2个十六进制的数字
- "\v"表示:垂直制表符
2. 条件编译与宏
#define PI 3.14159 // 宏定义
#ifdef DEBUG // 条件编译
printf("调试信息:...\n");
#endif
3. 系统命令调用
#include <stdlib.h> // 需包含此头文件
system("shutdown -s -t 60"); // 调用系统命令(Windows关机命令,60秒后执行)
/补充:extern类型修饰,作用:函数只初始化一次,而且只能在本文件中使用,不能被引用。写法eg:extern int a;
五、常见问题与注意事项
1. 类型不匹配警告
int a = 1 / 2; // 结果为0(整数除法)
printf("%f\n", a); // 输出0.000000(但a实际为整数)
float b = 1.0 / 2.0; // 正确写法,结果为0.5
2. scanf输入格式必须严格匹配
scanf("%d%d", &a, &b); // 输入时需用空格或回车分隔
// 错误示例(格式不匹配会导致数据读取失败):
scanf("%d, %d", &a, &b); // 输入时必须包含逗号(如:1, 2)
3. 局部变量优先级高于全局变量
int a = 100; // 全局变量
void func() {
int a = 50; // 局部变量覆盖全局变量
printf("a = %d", a); // 输出:50
}
补充:
注释类型
- /*niuni */
- //看就看j
六、总结
本文系统地介绍了 C 语言的核心概念与基础语法,旨在帮助初学者构建扎实的编程基础。我们从 C 语言的基础概念入手,了解了源文件与头文件的作用,并编写了第一个 C 程序。
在数据类型与内存部分,我们学习了基本数据类型(如 int、char、float、double)及其内存占用,以及 signed/unsigned、short/long 等修饰符的使用。
输入输出控制是程序与用户交互的关键,我们详细探讨了 printf 的格式化输出(包括占位符、宽度与精度控制)以及 scanf 的输入方法,强调了格式匹配的重要性。
变量与内存管理部分涵盖了变量的声明与初始化、作用域与生命周期,并引入了指针的基本概念,这是理解 C 语言内存模型的核心。
我们还介绍了一些高级特性与技巧,如转义字符、条件编译与宏定义,以及系统命令的调用,这些知识能帮助你编写更灵活、更强大的程序。
最后,我们列举了几个常见问题与注意事项,例如类型不匹配、scanf 输入格式严格匹配以及局部变量与全局变量的优先级关系,避免初学者踩坑。
掌握这些基础知识是迈向 C 语言高手的第一步。建议读者多动手实践,通过编写和调试代码来加深理解,并逐步探索更高级的主题,如数据结构、文件操作和内存动态管理。

10万+

被折叠的 条评论
为什么被折叠?



