赞
踩
C语⾔
C语言是一门面向过程的程序设计语言,应用于底层开发,与面向对象的编程语言不同(如C++,JAVA),很多高级语言或操作系统如python,C++,Linux都是建立在C基础上写的。C语言能以简易的方式编译、处理低级存储器,其仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
C标准
由ANSI C是由美国国家标准协会(ANSI)及国际标准化组织(ISO)推出的关于C语言的标准。目前的C11标准是C语言官方第三个标准,该标准更好地支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。现在大众普遍运用的C标准是C99。
主要编译器
MSVC, GCC, Sublime, Turbo C, Clang等。
VS2022:与编译器有些许不同,它是集成了编辑器,编译器(MSVC)和调试器于一体的比较好用的集成开发环境。
编辑代码和运行的一般步骤
①创建新项目——生成空项目(C++),项目名应全英文,字符间应无空格与特殊字符,存储到特定磁盘位置上。
②创建源文件——C是C++语言的子集,C++中包含的强大功能在C文件格式中也兼容,所以选择C++文件创建格式。
2. 代码的基本组成
①头文件的引入:头文件包含了大量的C语言库函数,这些库函数是C语言编译器本身存在的C语言库函数是底层开发人员把开发中经常使用,频率较高的函数封装起来,提前放到一个个头文件里,供所有程序员使用。使用的时候一般在源文件最开头使用格式#include<文件名.h>引入头文件,常用的头文件及其功能:
⑴#include<stdio.h>:标准输入输出头文件定义了三个变量类型(无符号整型size_t,文件类型FILE,存储文件的任意位置类型fpos_t),一些宏(空值NULL,文件结束标志EOF等)和各种函数来执行输入和输出(如文件打开fopen, 格式化输出fprintf, 流缓冲定义setbuff等)。
⑵#include<stdlib.h>:实用工具头文件定义了一些常用的宏和工具函数(如动态开辟内存malloc,释放内存free,随机数生成rand等)
⑶#include<string.h>:定义了如何操作字符数组的头文件。
⑷#include<math.h>:数学操作和运算相关头文件。
⑸#include<windows.h>:与操作系统指令相关头文件。
等等
②主函数——主函数的声明int main(void),是C语言约定的程序执行入口,括号为void可省略。其标准的格式是int main(int argc, char* argv[]),前者为传参个数,后者为传参数值,但目前暂时置空void即可。int为整型数值,表明该代码的主要函数的返回值是整型变量int,一般主代码为用户各自定义函数功能的集成和功能实现的主要载体,所以返回值放在结尾一般为return 0,即代表主函数不需要用户返回任何值。需要注意的是,main函数在一个程序代码中有且只能有一个。最好在每个主函数代码结尾处加上getchar();,这样每次代码运行结束后的程序不会一闪而过,特别是在运行.exe文件和release发行版本的时候更需要注意,调试debug版本则会在调试阶段自动为测试函数保留控制台观察效果而可以忽略getchar()的使用。
注:debug为调试程序,即仍处于测试开发阶段的程序代码,也尚未发行的代码阶段。Release为代码的发布版本,编译成这个版本的.exe程序文件可以分享给他人,且实际大小比debug版本更低。
③用户自定义函数——根据实际功能而定义的个性化需求函数,放置于主函数中可实现各种不同的功能,但每个函数的返回值只能有一个,格式为:返回值类型+函数名+参数列表。
3. 编辑+编译+链接+运行
①编辑——编辑代码就是描述函数功能的具体实现,通过逐行定义变量,输入字符,插入函数,存入文件等按C语法规则输入的文本最终编辑成为以.c为后缀C源代码文件。
②编译:编译是由编译器把编辑好的.c后缀的源代码文件翻译成使用汇编语言指令表示的以.obj为后缀的目标文件,通常一个源代码文件对应一个目标文件(一个目标文件又包含多汇编代码文件所以编译又可以分为预编译,编译和汇编),在此过程中自动对源程序进行语法检查并标明错误类型和位置待用户修改。
③链接:将编译阶段形成的目标文件.obj中的汇编代码文件进行链接汇总,最后生成以.exe为后缀的可执行程序文件。
例:编写程序Hello World
明确了程序编辑和编译的基本情况,就可以开始个人程序的简单编写了。
①如果使用2013版本以上的微软VS编译器,最好先在编译器默认安装根目录vs\Common7\IDE\VC\VCProjectitems下找到newc++file,该文件为新建源文件的格式文件,即每次创建新项目时生成的默认源代码模板。使用notepad++或记事本(需拷贝到桌面再复制回来覆盖以免权限不足)打开并加入一句#define _CRT_SECURE_NO_WARNINGS 1,然后保存。该语句的作用是为编译器加入预处理定义,对于诸如scanf和strcpy或getchar,gets等版本较老的(输入型)C库函数或宏时有可能造成缓冲区溢出和内存越界等问题,因为这类函数在读取数据时不检查边界,是不安全的函数,所以加入该预定义指令兼容此类函数。
② 编辑代码——引入标准输入输出头文件后,定义主函数main,在其中插入C标准库函数printf,该函数为格式化的输出函数,其函数声明内置在引入的头文件stdio.h中,格式为printf("<格式化字符串>", <参数列表>),可以将双引号选中的字符串及由参数列表赋值的格式化参数输出到stdout,也就是打印到屏幕上。在其中输入“Hello World”时需要注意双引号需要是英文字符,中文字符是不被接收会报错的。注意到该引号中还包含了转义字符“\n”,转义字符在C语言的定义里可以显示ASCII码中不能显示的字符,“\n”便是其中之一,其作用是输出完该串字符后将光标指针移动至下一行第一格,即回车。
代码及结果展示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。