
文章目录前言一、C语言是什么二、C语言的常见概念1.一个程序形成的主要过程2.第一个C语言程序3.main 函数4.关键字介绍5.字符和ASCll编码6.字符串和\06.转义字符7.语句和语句分类8.注释总结前言初学C语言常常被各类概念混淆。本文整理常见重难点概念辨析理清误区既是个人学习记录也供大家参考。一、C语言是什么我们都知道人与人之间要通过语言来进行交流如汉语、英语等而人和计算机进行交流也是一样但是计算机不会人类的语言所以说人需要去学习计算机语言使用计算机语言才能向计算机下达指令让计算机工作而C语言就属于计算机语言中的一种。二、C语言的常见概念1.一个程序形成的主要过程先编写程序的代码.c再通过编译器各自分别进行编译形成目标文件.obj与链接库一起通过链接器生成含有二进制信息的可执行程序.exe如下图2.第一个C语言程序代码如下示例#includestdio.hintmain(){printf(hello,world);return0;}请尝试跟着我写一遍吧作为你学习C语言的写的第一条代码第一次写代码可能会犯的一些错误·main 被写成 mian·main 后面的() 漏掉了·代码中不能使用中文符号如括号和分号·一条语句结束后必须要有分号C语言程序通用模板intmain(){return0;}虽然你现在不知道这些代码的意思但或许你学完这篇文章就会明白了3.main 函数在每个C语言程序中main 函数作为程序的入口程序的执行都是从main 函数开始main 函数也叫“主函数”main 函数前面的 int 表示main 函数在程序执行结束时会返回一个整型类型的值其实就是一个整数所以才会在main 函数的末尾写 return 0; 形成前后呼应。·main 函数有且仅有一个·即使一个项目中有多个.c文件也只能有一个main函数4.关键字介绍C语言中有一批保留的名字的符号如int 、if、return,这些符号被叫做关键字或保留字。·不能自己去创建新的关键字·标识符这里先认为是变量名不能和关键字重名C语言中的关键字如下图这些关键字不用刻意去记后续会进行相关的学习在学中练在练中学自然而然的你就能熟练的掌握它了。5.字符和ASCll编码在键盘上可以敲出各种字符如A、、c等在C语言中我们通常使用单引号将字符括起来如‘A’ ‘’ ‘c’计算机只能读取二进制信息那么字符在内存中是以什么样的二进制形式去存储的呢美国国家标准协会出台了一个ASCll编码规定了C语言中字符遵循ASCll编码的方式。ASCll编码表如下图我们不需要记住整张表但是表中的几组数据还是值得我们去掌握一下给大家总结出来了·字符0~9的ASCll码值是48-57·字符A~Z的ASCll码值是65-90·字符a~z的ASCll码值是97-122·大写字母的ASCll码值32小写字母的ASCII码值·换行\n的ASCll码值为10·其中ASCll码值为0~31的字符为不可打印字符即无法打印在屏幕上去观察intmain(){printf(%c\n,a);printf(%c\n,a-32);printf(%c\n,A);printf(%c\n,A32);return0;}//大写英文字母的Ascll码值32等于小写英文字母的Ascll码值//小写英文字母的Ascll码值-32等于大写英文字母的Ascll码值//常见的打印格式// %s 打印字符串// %c 打印字符// %d 打印整数// %f 打印小数默认保留小数后6位不够补06.字符串和\0字符串在C语言中是被双引号括起来的一串字符如“abcd”字符串的打印格式是 %s ,或者直接打印#includestdio.hintmain(){printf(%s\n,hello);printf(hello);return0;}图中这两条printf语句输出结果都是 hello我们在这只需要知道printf语句会将要打印的字符串打印在屏幕上观察在字符串的末尾藏着一个\0, 作为字符串结束的标志如abcd这个字符串实际上有5个字符组成分别是 a、b、c、d、\0既然你知道了\0的作用那么我们试着做一下下面的例题吧#includestdio.hintmain(){chararr1[]abc;chararr2[]{a,b,c};printf(%s\n,arr1);printf(%s\n,arr2);return0;}// 字符串结束的标志是\0// 只要是由英文双引号标注的是字符串英文单引号标注的是字符// 在arr1数组中abc是字符串字符串末尾默认隐藏一个\0// 即arr1输出结果为 abc// 在arr2数组中a,b,c是字符字符末尾是没有\0的// 所以arr2输出结果为abc----,一串随机值直到出现\0输出才结束// 若要跟arr1输出结果一样则需在字符末尾再添加一个字符\0,让它有一个结束的标志了解了\0的重要性我们做个练习吧#includestdio.hintmain(){printf(abcndef\n);printf(abc\ndef\n);printf(abc\0def\n);return0;}// \n表达是换行// \0表达是字符串结束的标志// 如上输出结果为// 第一行abcndef// 第二行abc// 第三行def// 第四行abc 因为后面是\0输出结束故def不输出拓展计算字符串长度// strlen的运用intmain(){intnumstrlen(abcde);//strlen表示字符串的长度即在\0之前的字符个数printf(%d\n,num);return0;}6.转义字符转义字符转变原来意思的字符它是一组特殊的字符如\0\n等接下来讲解常见的转义字符会通过示例帮助大家更好的理解\在书写连续多个问号时使用防止他们被解析成三字母词在新的编译器上没法验证了。#includestdio.hintmain(){printf(are you ok??)\n);printf(are you ok\?\?)\n);return0;}// ??)在以前会被视为三字母词即该词会被翻译成 ]// ??( --- [// 现在可以使用但是建议使用如下格式// ??) \?\?)\’ 用于表示字符常量 ’#includestdio.hintmain(){//printf(%c\n, );printf(%c\n,\);return0;}//我们想要输出一个所以我们在代码里写了三个//但是此时程序报错由于是成对出现前2个分为一组第3个落单了//出现语法错误程序不能输出一个//解决方案在中间前面加\将中间的进行转义将它视为一个普通的字符//前后两个自动成对就可以输出了\ 用于表示一个字符串内部的双引号#includestdio.hintmain(){printf(%c\n,);printf(%s\n,\);return0;}//原因和上面一样\\ 用于表示⼀个反斜杠防止它被解释为一个转义序列符。#includestdio.hintmain(){//printf(%c\n, \);//不能被输出printf(%s\n,\\);return0;}//原因和上面一样\a 警报这会使得终端发出警报声或出现闪烁或者两者同时发生。#includestdio.hintmain(){printf(\a);return0;}// \a表示发出警报\t :制表符光标移到下一个水平制表位通常是下一个4/8的倍数。#includestdio.hintmain(){printf(abc\tdefgh\ti);return0;}// \t表示在光标移到下一个水平制表位通常是下⼀个4/8的倍数// \t前面的元素填入8个空位值从左边第一个开始填入元素填完// 没填的空位空着在第九个空位开始填入\t后的元素也是以八位为总长// 若不明白将代码运行一下\b 退格键光标回退一个字符但不删除字符。//示例一#includestdio.hintmain(){printf(abc\b);getchar();//用来在键盘上读取一个字符的,若不输入则程序停滞在这步return0;}// \b表示光标回退回退一格但不删除字符// 上述代码运行结果是 ab|c// 光标从c后回退到bc中间//示例二#includestdio.hintmain(){printf(abcd\by);getchar();return0;}//运行结果为:abcyd// 先回退到cd中间在cd中间输入y\n换行。#includestdio.hintmain(){printf(hello\n);return0;}\r回车符光标移到同一行的开头。#includestdio.hintmain(){printf(abcd\r);getchar();return0;}// \r表示光标回退到该行的开头也就是该行的最左边// 类似与以前的打字机打完一行字回退到最左边打下一行内容还有2种转义字符\ddd:d d d表示1到3位八进制数\xdd表示2个十六进制数#includestdio.hintmain(){printf(%c\n,\130);printf(%c\n,\x30);return0;}// 先将八进制或十六进制数转化为十进制数在ASCLL码表上找到对应的字符输入计算过程如下以上是常用的转义字符介绍相信各位都有所了解那么我们来做几个练习吧#includestdio.h#includestring.hintmain(){intlenstrlen(c:\test\198\abc\test.c);printf(%d\n,len);return0;}// c:(2) \t(1) est(3) \1(1) 98(2) \a(1) bc(2) \t(1) est.c(5)// 字符串长度为18// \t \a 都是转义字符算一个字符// \1和98为什么不算在一起?// 因为\1开头为八进制数而八进制数范围是0到7很明显9和8已经超过范围故不能算在一起intmain(){intlenstrlen(c:\test\098\abc\test.c);printf(%d\n,len);return0;}//字符串长度为6// c:(2) \t(1) est(3) \0结束语句同时\0不算入字符长度7.语句和语句分类C语言的代码是由一条条语句构成的将这些语句进行分类可分为以下5种·空语句一个分号就是一条空语句#includestdio.hintmain(){;//空语句return0;}·表达式语句表达式后面加上分号#includestdio.hintmain(){inta20;intb0;ba5;//表达式语句return0;}·函数调用语句函数调用时加上分号#includestdio.hintAdd(intx,inty){returnxy;}intmain(){printf(hehe\n);//函数调⽤语句intretAdd(2,3);//函数调⽤语句return0;}**·**复合语句就是代码块成对括号中的代码组成一个代码块#includestdio.hvoidprint(intarr[],intsz)//函数的⼤括号中的代码也构成复合语句{inti0;for(i0;isz;i){printf(%d ,arr[i]);}}intmain(){inti0;intarr[10]{0};{for(i0;i10;i)//for循环的循环体的⼤括号中的就是复合语句arr[i]10-i;printf(%d\n,arr[i]);}return0;}·控制语句用于控制程序的执行流程以实现程序的各种结构方式可分成以下三类条件判断语句也叫分支语句if语句、switch语句循环执行语句dowhile语句、while语句、for语句转向语句break语句、goto语句、continue语句、return语句。后续会介绍这里先了解即可8.注释注释是对代码的说明编译器会忽略注释也就是说注释对实际代码没有影响。注释是给程序员自己或者其他程序员看的建议大家写必要的注释。注释的两种形式1./…/·将注释放在/…/ 之间内部可以分行**·可以插在行内eg. int fopen(chars /file name */, int mode)2.//**·**将注释放在双斜杠// 后面从双斜杠到行尾都属于注释。这种注释只能是单行可以放在行首也可以放在一行语句的结尾。不管是哪一种注释都不能放在双引号里面。双引号里面的注释符号会被视为字符串的⼀部分解释为普通符号失去注释作用。intfun(intx,inty){returnxy;}intmain(){printf(hehe\n);/*调用printf函数打印hehe在屏幕上*/return0;}// 第一种为//在语句开头使用// 第二种为/**/内部可以多行但是不支持嵌套注释//eg. /*abc/*s*/aa*/// 此时第一个/*会和出现的第一个*/形成注释,那么中间/*s*/就不是注释了第二个/*失去作用了总结熟练掌握基础概念是学好C语言的前提。希望本文的梳理能够帮大家扫清理解障碍持续精进。发现文中有错误可在评论区指出不断地改进才能让大家一起进步