C简介
可移植 标准C C/C++ (系统硬件操作的接口,windows,Linux不一样)
跨平台 Java Python
下载
去官网选择Visual Studio 2019下载
安装过程中勾选使用C++的桌面开发
安装好之后点击创建新项目——空项目
位置最好放在根目录下,解决方案名称可以是中文,填好之后点创建
新建代码并编译运行
选择源文件——添加——新建项
默认是cpp(c plus plus),就是C++。
名称填入以 .c
结尾,这样就是C语言了。(C++语法更严格些,初学者建议用C)
#include <stdio.h> //这是头文件,写C和C++都要加头文件
//入口函数 程序执行时从main函数进入
int main() {
printf("Hello world\n");//打印输出
//system("pause"); vs2012需要再输入这句代码,2019、2017不需要
return 0;
}
main是主函数名,int是函数返回值类型。每个C程序必须有一个主函数main,程序从main函数开始执行。花括号{}是函数开始和结束的标志,不可省略。每个C语句均以半角分号结束。
点击本地Windows调试器开始运行程序
执行结果
使用标准库函数时应在程序开头一行书写如下内容:
#include <stdio.h> //printf函数需要使用该头文件
#include <stdlib.h> //system函数需要使用该头文件
程序的编译过程
程序的编译过程如图所示,首先编写源程序f.c。编写完毕后,通过编译器进行编译,这里的编译包括预处理、编译、汇编,详细过程在Linux系统编程中讲解,可以参考关于编译原理的书籍。f.c经过编译后,得到f.obj文件,f.obj文件中均是0/1类型的机器码,即CPU能够识别的微指令(英特尔的机器指令)。f.obj文件并不能执行,因为我们调用的标准库函数的代码并不在f.obj文件中。例如上面main.c中的printf函数,其代码并不在main.obj中, 这时经过链接就得到可执行文件f.exe。了解这个编译过程后,后面在编写程序遇到编译错误时,就可以分析错误,进而区分是编译错误还是链接错误。
我们在集成开发环境中写的代码叫做源程序f.c
。经过编译之后首先生成的是目标文件f.obj。
”解决方案“所在文件夹:
一个解决方案里面可以有多个项目,这里helloworld就是其中一个项目
编写的代码文件就在main.c
编写的代码经过编译首先生成的文件是目标文件main.obj
。
下一步目标文件进行链接,生成可执行文件f.exe
。
为什么要进行链接?
答:因为目标文件main.obj中并没有我们刚才编写的代码的函数的源码,比如printf函数,这个库函数的实现在目标文件main.obj中并没有,而是在动态库里。
为什么要强调链接过程?
答:后面一旦出现编译错误时,会有一个错误是链接错误。后续遇见错误时要区分是编译错误还是链接错误。
程序变为exe经过了两步,一步是编译,一步链接。
断点及调试窗口设置
先把行号显示出来,工具 - 选项 - 文本编辑器 - C/C++ - 行号。
打断点,在左边区域点击一下即可
有三大调试窗口,先学把两个调出来
- 内存。在后面学到数组,指针可以看到成片的数据变化,很方便。
- 监视。可以把变量输入到该窗口里,想看哪个变量,执行下一步,某个变量变化了就可以在监视中看到。
当程序还没有运行并停到某一步时是不能调出调试窗口的,如下,没有显示
当程序运行起来并停到断点处时,刚才的断点会显示成箭头,此时可以调出调试窗口先调出监视窗口
再调出内存窗口
如何进行调试:
目标
学习C语言后,达到的效果是理解程序的执行过程。
程序的执行过程简单来说就是内存的变化过程,因此后面的章节都会关注内存的变化。我们通过内存来存储数据,数据存储要有规律,以便我们高效取出;把处理好的数据存放好,以便在用户需要时显示给用户。