C语言入门指南:从基本概念到第一个程序
C语言入门指南从基本概念到第一个程序C语言是一门古老而强大的编程语言诞生于20世纪70年代初最初是为了编写UNIX操作系统而设计的。时至今日它依然是计算机科学教育、嵌入式开发、操作系统、编译器等领域的重要工具。本文将从C语言的基本概念、开发环境搭建、程序结构、函数、字符串、转义字符、语句与注释等方面带你快速入门C语言。学习建议本文所有代码示例都经过实测建议你打开编译器亲手敲一遍效果远好于只是阅读。目录一、C语言的历史与概念二、开发环境搭建三、第一个C程序四、数据类型与占位符五、字符串与\0六、转义字符详解七、语句类型大全八、注释的用法九、综合示例十、常用快捷键十一、常见错误与注意事项十二、总结一、C语言的历史与概念C语言由Dennis Ritchie在贝尔实验室设计继承了B语言的优点并增加了数据类型、结构体等特性。它既具备高级语言的抽象能力又保留了汇编语言对硬件的控制能力因此被称为“中级语言”。C语言的主要特点特点说明高效生成的代码执行效率高可移植同一份代码稍作修改可在不同平台运行灵活支持指针、位运算等底层操作简洁只有32个关键字语法清晰C语言的影响深远后来的C、Java、C#、Go等语言都受到它的启发。二、开发环境搭建编译 链接 流程C语言是编译型语言代码需要经过两个步骤才能生成可执行文件编译将.c源文件转换为目标代码二进制链接将多个目标文件和库文件合并为可执行文件推荐的IDEIDE适合人群特点Visual Studio 2022初学者功能全面调试方便推荐Code::Blocks初学者轻量级跨平台CLion进阶JetBrains出品智能提示强VS Code GCC全阶段灵活轻便需手动配置使用VS2022创建C项目打开VS2022 → 创建新项目选择“空项目”或“控制台应用”重要项目名和路径中不要使用中文在源文件中添加.c文件如main.c编写代码按Ctrl F5编译运行三、第一个C程序#includestdio.hintmain(){printf(hello world!!\n);return0;}运行结果hello world!!main函数程序的入口一个工程中有且只有一个 main 函数使用 F10 可以进入 main 函数的第一行进行调试int main() 是标准写法return 0 表示程序正常结束printf函数定义在头文件 stdio.h 中Standard Input Output是C语言的库函数用于格式化输出\n 是换行符转义字符四、数据类型与占位符常用占位符占位符含义示例%d整数printf(“%d”, 10)%c字符printf(“%c”, ‘A’)%s字符串printf(“%s”, “hello”)%f浮点数printf(“%f”, 3.14)%.1f保留1位小数printf(“%.1f”, 3.14) → 3.1%p地址指针printf(“%p”, x)%zdsize_t类型printf(“%zd”, strlen(str))代码示例#includestdio.hintmain(){intage18;chargradeA;floatscore95.5;charname[]小明;printf(姓名%s\n,name);printf(年龄%d\n,age);printf(成绩%.1f\n,score);printf(等级%c\n,grade);// 字符和ASCII码的转换printf(字符%c的ASCII码是%d\n,A,A);printf(ASCII码65对应的字符是%c\n,65);return0;}运行结果姓名小明 年龄18 成绩95.5 等级A 字符A的ASCII码是65 ASCII码65对应的字符是A五、字符串与\0C语言中字符串以 \0 作为结束标志。例如“abcde” → 实际存储a b c d e \0%s 打印字符串时遇到 \0 停止strlen 函数统计的是 \0 之前的字符个数sizeof 统计的是整个数组占用的字节数代码示例#includestdio.h#includestring.hintmain(){// 正常字符串自动添加\0charstr1[]hello;printf(str1 %s\n,str1);printf(strlen(str1) %d\n,strlen(str1));// 5printf(sizeof(str1) %d\n,sizeof(str1));// 6包含\0// 手动指定字符数组需要自己加\0charstr2[]{h,e,l,l,o,\0};printf(str2 %s\n,str2);// ⚠️ 不加\0会出问题打印乱码或崩溃charstr3[]{h,i};// 没有\0printf(str3 %s\n,str3);// 可能打印出hi后跟乱码// 演示strlen遇到\0停止charstr4[]abc\0def;// \0后面的部分不会被统计printf(str4 %s\n,str4);// 输出abcprintf(strlen(str4) %d\n,strlen(str4));// 3return0;}运行结果str1 hello strlen(str1) 5 sizeof(str1) 6 str2 hello str3 hi???可能跟一些乱码 str4 abc strlen(str4) 3六、转义字符详解常用转义字符表转义字符含义说明\n换行最常用\t水平制表符补齐到8的倍数宽度\反斜杠打印一个\’单引号打印’双引号打印?问号防止被解析成三字母词\a响铃发出beep声\b退格光标左移一位不删除\r回车光标移到行首\ddd八进制转义ddd是八进制数\xdd十六进制转义dd是十六进制数三字母词旧标准??( 会被解析为 [ ??) 解析为 ] 使用 ? 可避免。代码示例#includestdio.h#includestring.hintmain(){// 1. 基本转义字符printf(第一行\n第二行\n);printf(姓名\t年龄\t成绩\n);printf(张三\t18\t95\n);printf(李四\t19\t88\n\n);// 2. 打印特殊符号printf(他说\C语言很有趣\\n);printf(C:\\Program Files\\VS2022\n);printf(字符\A\的ASCII是65\n);// 3. 响铃会发出beep声printf(警告\a\n);// 4. 八进制和十六进制转义printf(八进制\\101对应的字符%c\n,\101);// 101(八进制)65Aprintf(十六进制\\x42对应的字符%c\n,\x42);// 42(十六进制)66B// 5. 复杂示例charstr[]nso\anihao\x42\t;printf(字符串%s\n,str);printf(字符串长度%zd\n,strlen(str));// \a、\x42、\t 各算一个字符return0;}运行结果第一行 第二行 姓名 年龄 成绩 张三 18 95 李四 19 88 他说C语言很有趣 C:\Program Files\VS2022 字符A的ASCII是65 警告并伴有beep声 八进制\101对应的字符A 十六进制\x42对应的字符B 字符串nsoanihoB 后面有个制表符 字符串长度11七、语句类型大全C语言是 结构化程序设计语言支持以下语句类型1. 空语句;// 什么都不做常用于循环体中2. 表达式语句abc;x;yx*2;3. 函数调用语句printf(hello);scanf(%d,num);4. 复合语句代码块{intx10;printf(%d,x);}5. 控制语句选择结构if-else, switch#includestdio.hintmain(){intscore85;if-else语句if(score60){printf(及格了\n);if(score90){printf(成绩优秀\n);}}else{printf(不及格继续努力\n);}// switch语句intgradescore/10;switch(grade){case10:case9:printf(等级A\n);break;case8:printf(等级B\n);break;case7:printf(等级C\n);break;case6:printf(等级D\n);break;default:printf(等级F\n);}return0;}循环结构for, while, do-while#includestdio.hintmain(){// for循环打印1到5printf(for循环);for(inti1;i5;i){printf(%d ,i);}printf(\n);// while循环计算1到100的和intsum0,i1;while(i100){sumi;i;}printf(1到100的和 %d\n,sum);// do-while循环至少执行一次intnum1;do{printf(do-while执行%d\n,num);num;}while(num3);// 嵌套循环打印乘法表printf(\n乘法表\n);for(inti1;i9;i){for(intj1;ji;j){printf(%d×%d%-3d ,j,i,i*j);}printf(\n);}return0;}跳转语句break, continue, goto#includestdio.hintmain(){// break跳出循环printf(break示例);for(inti1;i10;i){if(i5)break;printf(%d ,i);}printf(\n);// continue跳过本次循环printf(continue示例);for(inti1;i10;i){if(i%20)continue;// 跳过偶数printf(%d ,i);}printf(\n);// goto跳转到指定标签谨慎使用printf(goto示例);for(inti1;i10;i){if(i5)gotoend;printf(%d ,i);}end:printf(跳过了后面的数字\n);return0;}运行结果break示例1 2 3 4 continue示例1 3 5 7 9 goto示例1 2 3 4 跳过了后面的数字八、注释的用法注释在编译时会被 替换为空格不会影响程序运行。// 这是单行注释/* 这是多行注释 可以写很多行 */// 注释的实用示例#includestdio.hintmain(){intx10;// 初始化变量x为10/* 以下代码计算x的平方 并将结果打印出来 */intsquarex*x;printf(%d的平方是%d\n,x,square);return0;}小技巧VS2022中选中代码后按 Ctrl K C 注释Ctrl K U 取消注释。九、综合示例下面是一个综合运用了上述知识点的完整程序#includestdio.h#includestring.hintmain(){// 1. 基本数据类型charname[20]张三;intage25;floatheight175.5;chargradeA;// 2. 字符串处理charstr1[]Hello;charstr2[]World;// 3. 输出信息printf( 学生信息 \n);printf(姓名%s\n,name);printf(年龄%d岁\n,age);printf(身高%.1fcm\n,height);printf(等级%c\n,grade);// 4. 转义字符演示printf(\n 转义字符演示 \n);printf(换行符\\n第一行\n第二行\n);printf(制表符\\tA\tB\tC\n);printf(反斜杠\\\\C:\\Users\\\n);printf(双引号\\\他说\你好\\n);printf(响铃\\a\a听到了吗\n);// 5. 字符串长度printf(\n 字符串长度 \n);printf(\%s\的长度是%d\n,str1,strlen(str1));printf(\%s\的长度是%d\n,str2,strlen(str2));// 6. ASCII码演示printf(\n ASCII码 \n);for(inti65;i90;i){printf(%c ,i);if((i-64)%100)printf(\n);}// 7. 控制语句 - 成绩评定printf(\n 成绩评定 \n);intscores[]{95,78,62,45,88};intsum0;for(inti0;i5;i){printf(第%d个学生%d分 - ,i1,scores[i]);if(scores[i]90){printf(优秀\n);}elseif(scores[i]70){printf(良好\n);}elseif(scores[i]60){printf(及格\n);}else{printf(不及格\n);}sumscores[i];}printf(\n平均分%.2f分\n,sum/5.0);return0;}十、常用快捷键VS2022快捷键功能Ctrl F5编译运行不调试F5调试运行F10单步调试逐过程F11单步调试逐语句Ctrl D向下复制当前行Tab向后缩进Shift Tab向前缩进Ctrl K C注释选中行Ctrl K U取消注释选中行Ctrl Shift F5重启调试十一、常见错误与注意事项❌ 错误1忘记加分号cint x 10 // 错误缺少分号❌ 错误2字符串缺少\0cchar str[] {‘a’,‘b’,‘c’}; // 没有\0可能导致乱码char str[] {‘a’,‘b’,‘c’,‘\0’}; // 正确char str[] “abc”; // 正确自动添加\0❌ 错误3printf中占位符和参数类型不匹配cint x 65;printf(“%c”, x); // 输出字符’A’但可能不是本意printf(“%d”, x); // 正确输出65❌ 错误4数组越界cint arr[5] {1,2,3,4,5};printf(“%d”, arr[5]); // 错误索引0-4没有arr[5]❌ 错误5忘记包含头文件cprintf(“hello”); // 错误没有#include stdio.hstrlen(“abc”); // 错误没有#include string.h❌ 错误6return 0 缺失或写错int main() {printf(“hello”);// 缺少 return 0; 某些编译器会警告}十二、总结本文从C语言的历史、开发环境、第一个程序、数据类型、字符串、转义字符、语句和注释等方面系统地介绍了C语言的基础知识并提供了大量可运行的代码示例。如果你觉得本文对你有帮助欢迎 点赞、收藏、评论也欢迎在评论区交流你的学习心得或问题