【C语言基础知识点全解析:从入门到实战】

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; // 指针指向num的地址

*ptr = 10; // 通过指针修改num的值为10


四、高级特性与技巧

1. 转义字符

常用转义字符:

  1. "\n"表示:回车,换行
  2. "\t"表示:水平制表符(4或8个空格)
  3. "\""表示:显示英文的双引号
  4. "\\"表示:显示反斜杠
  5. "\0"表示:字符串结束
  6. "\'"表示:字符常量
  7. "\a"表示:警告字符,鸣响
  8. "\b"表示:退格
  9. "\r"表示:回车
  10. "\ddd"表示:1~3个八进制的数字
  11. "\xdd"表示:2个十六进制的数字
  12. "\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

}

补充:

注释类型

  1. /*niuni */
  2. //看就看j


六、总结

本文系统地介绍了 C 语言的核心概念与基础语法,旨在帮助初学者构建扎实的编程基础。我们从 C 语言的基础概念入手,了解了源文件与头文件的作用,并编写了第一个 C 程序。

在数据类型与内存部分,我们学习了基本数据类型(如 int、char、float、double)及其内存占用,以及 signed/unsigned、short/long 等修饰符的使用。

输入输出控制是程序与用户交互的关键,我们详细探讨了 printf 的格式化输出(包括占位符、宽度与精度控制)以及 scanf 的输入方法,强调了格式匹配的重要性。

变量与内存管理部分涵盖了变量的声明与初始化、作用域与生命周期,并引入了指针的基本概念,这是理解 C 语言内存模型的核心。

我们还介绍了一些高级特性与技巧,如转义字符、条件编译与宏定义,以及系统命令的调用,这些知识能帮助你编写更灵活、更强大的程序。

最后,我们列举了几个常见问题与注意事项,例如类型不匹配、scanf 输入格式严格匹配以及局部变量与全局变量的优先级关系,避免初学者踩坑。

掌握这些基础知识是迈向 C 语言高手的第一步。建议读者多动手实践,通过编写和调试代码来加深理解,并逐步探索更高级的主题,如数据结构、文件操作和内存动态管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值