CFree5程序调试方法
C语言中几种输出调试信息的方法
![C语言中几种输出调试信息的方法](https://img.taocdn.com/s3/m/13f1ba09a66e58fafab069dc5022aaea998f4171.png)
在调试程序时,输出调试信息是一种普遍、有效的方法。
输出调试信息一般有以下五种方法:方法一:直接使用屏幕打印函数printf。
该方法直接在需要输出调试信息的位置使用函数prin tf输出相应的调试信息,以及某些关键变量的值。
我们通过以下求阶层的函数f act来看看该方法的调试程序过程。
#include <stdio.h>int fact(int n){int i,f=1;for( i=1; i<=n; i++){f += i;}returnf;}int main(){printf( "4!=%d/n", fact(4) );return0;}程序1: 有bug的求阶层函数程序1编译运行的结果如下:4!=11结果错误。
为了找到结果错误的原因,我们在语句"f += i;"之后插入函数p rintf输出调试信息,如程序2。
#include <stdio.h>int fact(int n){int i,f=1;for( i=1; i<=n; i++){f += i;printf("i=%d ; f=%d/n", i, f);}returnf;}int main(){printf( "4!=%d/n", fact(4) );return0;}程序2: 加入函数pri ntf输出调试信息的求阶层函数再编译运行该程序,屏幕输出如下:i=1 ; f=2 i=2 ; f=4 i=3 ; f=7 i=4 ; f=11 4!=11原来语句"f += i"错了,应该为"f *=i"。
修改过来(见程序3),再编译运行,结果如下:i=1 ; f=1 i=2 ; f=2 i=3 ; f=6 i=4 ; f=24 4!=24 #include <stdio.h>int fact(int n){int i,f=1;for( i=1; i<=n; i++){f *= i;printf("i=%d ; f=%d/n", i, f);}returnf;}int main(){printf( "4!=%d/n", fact(4) );return0;}程序3: 修改正确的求阶层函数调试完成,bug找到,并修改正确。
C Free 5程序调试方法
![C Free 5程序调试方法](https://img.taocdn.com/s3/m/2165ba97cc7931b765ce15a7.png)
C Free 5.0 程序的单步调试创建一份新的代码文件可直接点击“文件”下的白色图标,或点击“文件”选择“新建”,或按快捷键“Ctrl + N”(C Free 5.0默认情况下新建的代码文件为.cpp 格式,可在“工具”、“环境选项”、“新建文件类型”中更改,C语言标准格式为.c 格式)基于实例的C程序调试介绍一、查看变量的内容# include <stdio.h>int main(int argc, char* argv[]){int i;int sum;sum=0;for(i=1;i<=10;i++)sum=sum+i;printf("sum=%d",sum);return 0;}第一步,打开C Free 5.0,输入上面的代码。
第二步,把光标移到“sum=0;”这一行,按F10它的作用是设一个断点,程序运行到这里时,会停下来。
也就是说,接下来,程序必须通过按F7键单步运行了。
第三步:按F9 (开始调试)我们发现有一箭头停留在这句语句上,它指示程序停留的位置,而箭头所在的语句(“sum=0;”)还没有执行。
事实上,我们可以通过看一下内存变量sum的内容来验证。
方法是这样的:打开“调试”下的“监视”,或者按快捷键“Alt + 3”。
在“监视”的空白处点击鼠标右键,选择“添加监视”。
输入需要监视的变量名,这里输入为sum这时我们可以在监视窗口中看到sum的内容不为0,而是一个随机的值。
第四步,我们按一下F7(进入),我们发现sum的内容变为0了。
这说明“sum=0;”这句语句被执行了。
我们还可以用同样的方法看一下i的内容。
只需要鼠标点第六步,一步一步地按F7,我们可以发现在单步执行for循环语句的时候i和sum的内容在不断变化。
当退出循环时,我们发现i的内容为11(因为变量i的内容为11,i<=10这个条件不满足,所以程序退出循环)。
附带提一下,当程序已经执行了“sum=0;”这一句语句后,如果我们直接把光标移到“printf("sum=%d",sum);”,然后按Ctrl+ F8,我们可以直接把上面的for循环都执行了,而不必一步一步地按F7。
c free 5 教程
![c free 5 教程](https://img.taocdn.com/s3/m/c1c8b5eab04e852458fb770bf78a6529647d3509.png)
c free 5 教程C语言是一种通用的高级编程语言,广泛应用于开发各种软件和系统。
它是由Dennis Ritchie在20世纪70年代早期在贝尔实验室开发的,主要用于Unix操作系统的开发。
C语言具有简洁、高效和灵活的特点,成为了学习编程的入门语言之一。
首先,C语言的基本语法相对简单,易于理解和学习。
它采用了类似英语的结构和符号,使编程变得更加直观和自然。
例如,C语言的基本结构由函数和语句构成,函数由函数名、参数列表和函数体组成,语句由语句类型和分号构成。
这些基本元素使得C语言的代码可读性很高,方便程序员进行阅读和理解。
其次,C语言提供了丰富的库函数,这些函数可以方便地完成各种任务。
C标准库包含了大量的函数,如输入输出函数(如printf、scanf)、数学函数(如sqrt、sin)、字符串处理函数(如strcpy、strlen)等等。
这些函数可以直接调用,避免了编写繁琐的底层代码,提高了开发效率。
另外,C语言是一种高效的编程语言,可以生成高效的机器代码。
它的语法和结构简洁明了,避免了冗余和复杂的部分,提高了编译和执行的效率。
C语言还提供了指针的功能,允许直接访问内存地址,对于底层系统编程和性能优化非常有用。
此外,C语言还具有良好的可移植性和跨平台性。
由于C语言代码可以编译生成机器代码,可以在不同的操作系统和硬件平台上运行,只需进行少量的修改。
这使得C语言成为了开发跨平台软件和系统的首选语言之一。
最后,C语言的学习资源非常丰富,有大量的教程、书籍、在线论坛和社区,可以帮助初学者快速入门。
在学习过程中,可以通过编写小程序来巩固所学知识,逐步提升编程能力。
C语言还有大量的实际应用,如操作系统、数据库、嵌入式系统等,可以通过实践项目来提高编程水平。
综上所述,C语言是一种简洁、高效和灵活的编程语言,适合初学者入门学习。
它的基本语法简单易懂,库函数丰富,生成高效的机器代码,具有良好的可移植性和跨平台性。
c-free
![c-free](https://img.taocdn.com/s3/m/2d55bef6f61fb7360b4c6593.png)
编译、运行单个文件
C-Free可以将单个C/C++源文件编译、连接成一个可运行的应用程序,下面的步骤指导你如何编写、编译、运行一个简单的应用程序。
1、双击桌面上的C-Free快捷方式,运行起C-Free.
2、单击工具栏上的“新建”按钮,这样就会产生一个新的代码编辑器窗口,鼠标右键单击编辑区,在弹出的菜单中选择“代码模板->C template”,如下图所示:
这样会在编辑区产生如下代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
return 0;
}
3、修改上面的代码,在语句"return 0;"的上面插入如下语句:
printf("Hello, C-Free!\n")
然后单击工具栏上的“保存”按钮,保存文件为“hello.c”.保存后如下图所示:
4、单击工具栏上的“构建并运行”按钮,C-Free开始编译hello.c文件,编译的结果显示在消息窗口,上面的程序有错误,因此消息窗口将显示错误信息,并自动将错误定位到代码编辑器,高亮显示错误的位置.
5、修改源程序,在“printf”语句后加上分号,重新“运行”,通过编译,程序运行的结果如下:
在控制台窗口中,按任意键将关闭这个窗口,或者单击工具栏上的“停止”按钮,也将关闭。
C Free 5程序调试方法
![C Free 5程序调试方法](https://img.taocdn.com/s3/m/d6c5b71859fb770bf78a6529647d27284b733796.png)
C Free 5程序调试方法程序调试是软件开发过程中非常重要的一环,它可以帮助开发人员找出程序中的错误并进行修复。
在C语言中,程序调试是一项必不可少的技能。
本文将介绍C语言中常用的5种程序调试方法,以帮助开发人员更好地调试程序。
1. 使用printf语句调试:printf语句是C语言中最常用的调试工具之一。
通过在程序中插入printf语句,可以输出程序执行过程中的变量值、状态信息等,以便于观察程序的执行流程和变量的取值情况。
例如:```cint main() {int a = 10;printf("a的值为:%d\n", a);return 0;}```通过在程序中插入printf语句,可以观察到变量a的值为10,从而判断程序是否按照预期执行。
2. 使用断点调试:断点调试是一种常用的调试方法,它可以在程序执行过程中暂停程序的执行,以便于观察程序的执行状态和变量的取值情况。
在C语言中,可以使用调试器(如GDB)设置断点。
例如,在Linux环境下使用GDB调试程序,可以按照以下步骤设置断点:- 编译程序时加上-g选项,以便生成调试信息:```gcc -g program.c -o program```- 启动GDB调试器:```gdb program```- 设置断点:```break line_number```- 运行程序:```run```- 程序执行到断点处时会暂停,可以通过命令观察变量的取值情况,以及进行单步调试、查看栈帧等操作。
3. 使用assert宏调试:assert宏是C语言中的一个调试工具,它用于检查程序中的条件是否满足,如果条件不满足,则终止程序的执行,并输出错误信息。
使用assert宏可以在程序中插入一些断言,以确保程序的正确性。
例如:```c#include <assert.h>int divide(int a, int b) {assert(b != 0);return a / b;}int main() {int result = divide(10, 0);return 0;}```在上述代码中,使用assert宏判断除数b是否为0,如果为0,则终止程序的执行,并输出错误信息。
c-free标准版
![c-free标准版](https://img.taocdn.com/s3/m/2477a75f0a4e767f5acfa1c7aa00b52acfc79cd5.png)
c-free标准版C-Free标准版是一款功能强大的集成式开发环境,适用于C和C++编程语言。
它提供了丰富的功能和工具,使程序员能够高效地进行软件开发和调试。
本文将介绍C-Free标准版的主要特点和优势,帮助用户更好地了解和使用这款软件。
首先,C-Free标准版拥有直观友好的用户界面,使得用户能够快速上手并且提高工作效率。
软件界面简洁清晰,各个功能模块布局合理,操作简单直观,无论是新手还是经验丰富的程序员都能够轻松上手。
其次,C-Free标准版支持多种编程语言,包括C、C++等,而且能够兼容多种操作系统,比如Windows、Linux等。
这使得用户能够在不同的平台上进行开发,而不用担心软件的兼容性问题,极大地方便了程序员的工作。
另外,C-Free标准版还拥有强大的代码编辑和调试功能。
它提供了丰富的代码编辑器,支持代码自动补全、语法高亮、代码折叠等功能,大大提高了编码效率。
同时,软件还具有强大的调试功能,能够帮助用户快速定位和解决程序中的bug,提高了软件的稳定性和可靠性。
除此之外,C-Free标准版还支持多种编译器和调试器,用户可以根据自己的需求选择合适的编译器和调试器进行开发和调试。
这样一来,用户能够更加灵活地进行软件开发,提高了软件的可移植性和可扩展性。
总的来说,C-Free标准版是一款功能强大、易用性高的集成式开发环境,适用于C和C++编程语言。
它拥有直观友好的用户界面、支持多种编程语言和操作系统、具有强大的代码编辑和调试功能、支持多种编译器和调试器等优点,能够帮助用户高效地进行软件开发和调试。
希望本文的介绍能够帮助用户更好地了解和使用C-Free标准版,提高软件开发的效率和质量。
如果您对C-Free标准版还有其他疑问或者需求,欢迎您随时联系我们的客服人员,我们将竭诚为您服务。
cfree使用技巧
![cfree使用技巧](https://img.taocdn.com/s3/m/9d5b8ead988fcc22bcd126fff705cc1755275f91.png)
cfree使用技巧
1. 代码折叠:C-Free 支持代码折叠功能,可以将代码中的函数、类等折叠起来,以便更好地查看代码结构。
在代码编辑器中,单击代码左侧的减号按钮即可折叠代码块,单击加号按钮即可展开代码块。
2. 代码格式化:C-Free 提供了代码格式化功能,可以自动调整代码的缩进和空格,使代码更加易读。
在代码编辑器中,选择要格式化的代码,然后按下 Ctrl+Shift+F 键即可进行代码格式化。
3. 智能提示:C-Free 提供了智能提示功能,可以在编写代码时自动提示函数、变量等信息。
在代码编辑器中,输入函数名或变量名的前几个字母,然后按下 Ctrl+Space 键即可显示相关的提示信息。
4. 语法检查:C-Free 提供了语法检查功能,可以检查代码中的语法错误,并给出相应的提示信息。
在代码编辑器中,选择要检查的代码,然后按下 F8 键即可进行语法检查。
5. 调试功能:C-Free 提供了调试功能,可以在程序运行时查看变量的值、单步执行等。
在代码编辑器中,设置断点,然后按下 F5 键即可启动调试器。
6. 代码模板:C-Free 提供了代码模板功能,可以快速创建常见的代码结构,如 for 循环、if 语句等。
在代码编辑器中,输入相应的代码模板关键字,然后按下 Tab 键即可自动生成代码模板。
以上是一些 C-Free 的使用技巧,可以帮助你更好地使用这款开发工具。
当然,C-Free 还有很多其他的功能和技巧,你可以根据自己的需求和习惯进行探索和使用。
c程序设计第四版复习
![c程序设计第四版复习](https://img.taocdn.com/s3/m/a3b67679abea998fcc22bcd126fff705cc175c94.png)
c程序设计第四版复习C程序设计第四版是计算机科学领域的经典教材,由Brian W. Kernighan和Dennis M. Ritchie共同撰写,通常被称为K&R C。
这本书不仅介绍了C语言的基本语法和编程技巧,还涵盖了高级编程概念和实践。
以下是对C程序设计第四版的复习要点:1. C语言基础- 变量和数据类型:理解整型、浮点型、字符型等基本数据类型及其使用。
- 运算符:熟悉算术运算符、关系运算符、逻辑运算符、位运算符等。
- 控制语句:掌握if语句、switch语句、while循环、for循环和do-while循环的使用。
2. 函数- 定义和调用:理解函数的定义方式和如何调用函数。
- 参数传递:了解值传递和引用传递的区别。
- 递归:学习如何使用递归解决复杂问题。
3. 数组- 一维数组:掌握数组的声明、初始化和访问。
- 多维数组:了解二维数组的声明和使用。
- 指针和数组:理解指针与数组的关系,以及如何使用指针操作数组。
4. 指针- 指针基础:理解指针的概念和指针变量的声明。
- 指针和函数:学习如何通过指针传递函数参数。
- 指针数组和函数指针:掌握指针数组的使用和函数指针的概念。
5. 结构体和联合体- 结构体:理解结构体的声明、初始化和成员访问。
- 联合体:了解联合体的概念和使用场景。
- 结构体和指针:掌握如何使用指针访问结构体成员。
6. 预处理器- 宏定义:学习如何使用#define进行宏定义。
- 文件包含:了解如何使用#include包含其他文件。
7. 输入和输出- 标准库函数:熟悉printf和scanf等标准输入输出函数。
- 格式化输入输出:掌握如何使用格式化字符串进行输入输出。
8. 动态内存分配- malloc和free:学习如何使用malloc进行动态内存分配和使用free释放内存。
9. 文件操作- 文件指针:理解文件指针的概念。
- 打开和关闭文件:掌握如何使用fopen和fclose操作文件。
一款支持多种编译器的专业化CC++集成开发环境(IDE---C-Free5(亲测好用)
![一款支持多种编译器的专业化CC++集成开发环境(IDE---C-Free5(亲测好用)](https://img.taocdn.com/s3/m/12cf1e0715791711cc7931b765ce0508763275bf.png)
⼀款⽀持多种编译器的专业化CC++集成开发环境(IDE---C-Free5(亲测好⽤)C-Free是⼀款⽀持多种编译器的专业化C/C++集成开发环境(IDE)。
利⽤本软件,使⽤者可以轻松地编辑、编译、连接、运⾏、调试C/C++程序⽰例:#include <stdio.h>int main(){puts("C语⾔中⽂⽹");return 0;}编译报错:--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------正在编译 E:\9.C\hello.c...[Warning] E:\9.C\hello.c:6:2: warning: no newline at end of file[Error] gcc.exe: 5\mingw\include: No such file or directory[Error] gcc.exe: 5\mingw\include\c++\3.4.5: No such file or directory[Error] gcc.exe: 5\mingw\lib\gcc\mingw32\3.4.5\include: No such file or directory[Error] gcc.exe: 5\mingw\bin\: No such file or directory[Error] gcc.exe: 5\mingw\mingw32\bin\: No such file or directory编译中⽌ E:\9.C\hello.c: 5 个错误, 1 个警告解决⽅法:关闭C-FREE 5软件,在安装位置D:\C-Free 5\重命名为D:\C-Free5\,即将空格删去,然后重新打开c-free5(桌⾯快捷⽅式可能⽤不了,在安装位置处打开),打开D:\C-Free5\workspace\wxy\new1.cpp⽂件再运⾏就没有问题了总结:win10 不⽤安装编译器mingwc-free5的安装路径不能有空格出现这种问题不⽤卸载再安装,重命名即可。
C-Free 5控制台光标控制功能的增加方法
![C-Free 5控制台光标控制功能的增加方法](https://img.taocdn.com/s3/m/6c0d2e648bd63186bdebbc6c.png)
第35卷 第6期 福 建 电 脑 Vol. 35 No.62019年6月Journal of Fujian ComputerJun. 2019——————————————— 卓明敏(通信作者),男,1963年生,教授,主要研究方向为软件开发、计算机教育。
Email :1942625089@ 。
黄正亮,男,1963年生,副教授,主要研究方向为网络软件开发、计算机教育。
Email :444860610@ 。
廖小于,女,1969年生,副教授,主要研究方向为计算机教育。
Email:454872909@ 。
C-Free 5控制台光标控制功能的增加方法卓明敏 黄正亮 廖小于(赣州师范高等专科学校 江西 赣州 341000)摘 要 本文提出用Windows API 为C-Free 5程序编写控制台光标定位函数和延时函数的方法。
阐明其原理,指出其关键,提供源代码;并说明如何构成头文件,以及在程序中的使用。
关键词 光标定位;隐藏光标;延时函数;API ;C-Free 中图法分类号TP399 DOI:10.16707/ki.fjpc.2019.06.017Appending Console Cursor Controlling Function to C-Free 5ZHUO Mingmin, HUANG Zhengliang, LIAO Xiaoyu(Ganzhou Teachers College, Ganzhou, China, 341000)1 引言C-Free 5简体中文版,因其软硬件要求低、运行速度快、界面简洁、使用简便等优点,被广泛用于计算机程序设计相关课程的教学中,尤其适合学生上机使用[1]。
计算机教师,也常常用它来编写控制台程序,用于辅助教学。
但它有两个明显的不足,第一,所编的控制台程序运行时,只能按行输出,光标无法回到前面的行。
换句话说,也就是不能在控制台窗口中任意定位、隐藏、显示光标,而不能输出复杂的运行结果,更不能进行复杂的人机交互。
C语言优化程序空间效率技巧
![C语言优化程序空间效率技巧](https://img.taocdn.com/s3/m/94608821fe00bed5b9f3f90f76c66137ee064fa6.png)
C语言优化程序空间效率技巧在编写C语言程序时,优化空间效率是提高程序性能和资源利用率的关键。
在本文中,将介绍一些常用的C语言程序空间优化技巧,帮助读者更好地理解和应用这些技巧。
1、使用合适的数据类型在C语言中,选择合适的数据类型可以节省内存空间并提高程序性能。
例如,当一个变量的取值范围明确时,可以使用较小的数据类型,如使用char类型代替int类型,以节省内存空间。
此外,一些特殊的数据类型,如bit字段和位域,可以进一步减小数据的存储空间。
2、避免内存泄漏内存泄漏是指程序在动态分配内存后,没有适时地释放该内存,导致内存的浪费。
为了避免内存泄漏,应注意在使用malloc()和free()函数时,分配的内存要及时释放,以避免程序运行过程中出现内存泄漏问题。
3、使用动态内存分配和释放在某些情况下,需要在程序运行时动态地分配和释放内存。
使用动态内存分配函数如malloc()和动态内存释放函数如free()可以灵活地管理内存空间,从而减少内存消耗。
然而,也需要注意在不再使用动态分配的内存后及时释放,以防止内存泄漏。
4、避免过度使用全局变量全局变量在C语言程序中具有全局作用域,可以在程序的任何地方访问。
然而,过度使用全局变量会占用大量内存空间,并且增加程序的复杂性。
在编写程序时,应尽量减少全局变量的使用,尽可能将变量的作用域限制在局部。
5、压缩和优化数据结构优化数据结构是提高程序空间效率的重要手段。
可以通过减少数据冗余、合并相同类型的数据、采用更紧凑的存储方式等方式来压缩和优化数据结构。
例如,可以使用位运算来表示数据中的某些属性或状态,以减小存储空间的占用。
6、避免频繁的内存分配和释放频繁的内存分配和释放会引起内存碎片问题,导致程序运行效率下降。
为了避免这个问题,可以考虑使用内存池技术,预先分配一块较大的内存空间,然后在程序运行过程中重复使用这块内存,避免频繁地进行内存分配和释放操作。
7、合理设计算法和数据结构算法和数据结构是程序效率的关键因素。
【VIP专享】在CFree5中建立多文件项目的方法
![【VIP专享】在CFree5中建立多文件项目的方法](https://img.taocdn.com/s3/m/dae1dd341a37f111f0855b1e.png)
2. 选择“工程类型(T)”区域中的“一般”标签,单击“控制台程序”(Console
application),然后在“工程名称”文本框中输入“工程文件名”(如:exer),在“保存位
置(L)”列表框中输入文件保存位置(也可点击该列表框后面的“…”按钮选择保存工程
文件的文件夹),完成后单击“确定”按钮,进入控制台程序向导“控制台程序-第 1 步/(b)新建工程对话框图 3 控制台程序向导之二
图 4 控制台程序向导之三
5. 在“第 3 步:选择构建配置”,按提示选择后,单击“完成”按钮,可能出现如下 提示信息:
图 5 设置 include 路径提示信息对话框
单击“确定”按钮,出现“编译器位置”对话框如下:
图 6 编译器位置设置对话框
6. 在“编译器位置”设置对话框中,选择“mingw”编译器(当然也可以选择其他编 译器),然后单击“确定”按钮,进入如下“工程设置”界面:
在 CFree5.0 中建立 C 语言多文件项目的方法
1. 打开 C-Free 5,在出现开始界面(如图 1(a))时,单击“新建工程(C)…”按 钮(或在如图 1(a)的界面关闭后,选择菜单“工程(P)-新建-项目…”命令),进入如图 1(b)的界面:
(a) C-Free 5 的开始界面
图 1 新建工程对话框
共 3 步”:
图 2 控制台程序向导之一
3. 在“第 1 步:程序类型”中单选“空的程序”,单击“下一步”; 4. 在“第 2 步:语言选择”中选择“C 语言”,单击“下一步”;
6.培养学生观察、思考、对比及分析综合的能力。过程与方法1.通过观察蚯蚓教的学实难验点,线培形养动观物察和能环力节和动实物验的能主力要;特2征.通。过教对学观方察法到与的教现学象手分段析观与察讨法论、,实对验线法形、动分物组和讨环论节法动教特学征准的备概多括媒,体继课续件培、养活分蚯析蚓、、归硬纳纸、板综、合平的面思玻维璃能、力镊。子情、感烧态杯度、价水值教观1和.通过学理解的蛔1虫.过观适1、察于程3观阅 六蛔寄.内列察读 、虫生出蚯材 让标容生3根常蚓料 学本教活.了 据见身: 生,师的2、解 问的体巩鸟 总看活形作 用蛔 题线的固类 结雌动态业 手虫 自形练与 本雄学、三: 摸对 学动状习人 节蛔生结4、、收 一人 后物和同类 课虫活构请一蚯集 摸体 回并颜步关 重的动、学、蚓鸟 蚯的 答归色学系 点形教生生让在类 蚓危 问纳。习从 并状学理列学平的害 题线蚯四线人 归、意特出四生面体以形蚓、形类 纳大图点常、五观玻存 表及动的鸟请动文 本小引以见引、察璃现 ,预物身类 3学物明 节有言及的、导巩蚯上状 是防的体之生和历 课什根蚯环怎学固蚓和, 干感主是所列环史 学么据蚓节二样生练引牛鸟 燥染要否以举节揭 到不上适动、区回习导皮类 还的特分分蚯动晓 的同节于物让分答。学纸减 是方征节布蚓物起 一,课穴并学蚯课生上少 湿法。?广的教, 些体所居归在生蚓前回运的 润;4泛益学鸟色生纳.靠物完的问答动原 的4蛔,处目类 习和活环.近在成前题蚯的因 ?了虫以。标就 生体的节身其实端并蚓快及 触解寄上知同 物表内特动体结验和总利的慢我 摸蚯生适识人 学有容点物前构并后结用生一国 蚯蚓在于与类 的什,的端中思端线问活样的 蚓人飞技有 基么引进主的的考?形题环吗十 体生行能着 本特出要几变以动,境?大 节活的1密 方征本“特节化下物.让并为珍 近习会形理切 法。课生征有以问的小学引什稀 腹性态解的 。2课物。什游题主.结生出么鸟 面和起结蛔关观题体么戏:要利明蚯?类 处适哪构虫系察:的特的特用确蚓等 ,于些特适。蛔章形殊形征板,这资 是穴疾点于可虫我态结式。书生种料 光居病是寄的们结构,五小物典, 滑生?重生鸟内学构,学、结的型以 还活5要生类部习与.其习巩鸟结的爱 是如原活生结了功颜消固类构线鸟 粗形何因的存构腔能色化练适特形护 糙态预之结的,肠相是系习于点动鸟 ?、防一构现你动适否统。飞都物为结蛔。和状认物应与的行是。主构虫课生却为和”其结的与题、病本理不蛔扁的他构特环以生?8特乐虫形观部特8征境小理三页点观的动位点梳相组等、这;,哪物教相,理适为方引些2鸟,育同师.知应单面导鸟掌类结了;?生识的位学你握日构解2互.。办特生认线益特了通动手征观识形减点它过,抄;察吗动少是们理生报5蛔?物,与的解.参一了虫它和有寄主蛔与份解结们环些生要虫其。蚯构都节已生特对中爱蚓。会动经活征人培鸟与飞物灭相。类养护人吗的绝适这造兴鸟类?主或应节成趣的为要濒的课情关什特临?就危感系么征灭来害教;?;绝学,育,习使。我比学们它生可们理以更解做高养些等成什的良么两好。类卫动生物习。惯根的据重学要生意回义答;的3.情通况过,了给解出蚯课蚓课与题人。类回的答关:系线,形进动行物生和命环科节学动价环值节观动的物教一育、。根教据学蛔重虫点病1.引蛔出虫蛔适虫于这寄种生典生型活的线结形构动和物生。理二特、点设;置2.问蚯题蚓让的学生生活思习考性预和习适。于穴居生活的形态、结构、生理等方面的特征;3.线形动物和环节动物的主要特征。
c语言遇到的问题、解决方法及结果
![c语言遇到的问题、解决方法及结果](https://img.taocdn.com/s3/m/3ef5bfadafaad1f34693daef5ef7ba0d4a736d3b.png)
C语言遇到的问题、解决方法及结果1.引言C语言作为一种广泛应用的高级编程语言,常常用于开发系统软件、嵌入式软件以及数据结构等领域。
在使用C语言进行开发过程中,我们会遇到各种问题,本文将讨论常见的问题,并提供相应的解决方法及结果。
2.内存管理问题2.1内存泄漏问题描述:C语言中没有自动内存管理机制,因此在使用动态分配内存时,如果没有释放已使用的内存,就会导致内存泄漏。
解决方法:及时释放已使用的内存是避免内存泄漏的关键。
在每次动态分配内存后,务必记得使用`f re e()`函数释放内存。
结果:通过及时释放内存,可以有效避免内存泄漏问题,提高程序的内存利用效率。
2.2指针问题问题描述:由于C语言中指针的概念较为复杂,容易出现指针使用错误、野指针等问题。
解决方法:在使用指针时,需要保证指针的合法性,避免野指针问题。
同时,可以使用调试工具检查指针的值,以便及时发现和修复指针相关的问题。
结果:通过正确使用指针,可以避免指针相关的错误,提高程序的稳定性。
3.编译问题3.1编译错误问题描述:在使用C语言进行开发时,常常会遇到编译错误,如语法错误、缺少头文件等。
解决方法:仔细检查编译错误的提示信息,根据提示信息进行错误排查。
合理使用编译器提供的调试工具,例如使用`-W al l`选项开启所有警告信息,帮助发现潜在的问题。
结果:通过仔细排查编译错误并进行修复,可以确保程序的正确编译,提高开发效率。
3.2编译器兼容性问题描述:不同的编译器可能对C语言标准的支持程度不同,导致同一份代码在不同编译器下的行为不一致。
解决方法:在开发时,要考虑到目标平台使用的编译器,并根据编译器的要求进行相应的调整和优化。
可以使用条件编译等技术,在不同的编译器下使用不同的代码逻辑。
结果:通过确保程序在目标平台下编译通过,可以提高程序的可移植性和兼容性。
4.性能优化问题4.1程序运行缓慢问题描述:C语言程序在运行过程中可能会因为算法设计不合理、性能瓶颈等原因导致运行缓慢。
C-Free使用教程(完整版)
![C-Free使用教程(完整版)](https://img.taocdn.com/s3/m/5596eb12b42acfc789eb172ded630b1c59ee9b35.png)
C-Free使⽤教程(完整版)C-Free C/C++IDE使⽤⼿册C/C++教研组编写版权所有,请勿转载⽤于商业⽤途2019年8 ⽉⽬录2 C-Free 的软件特性 (1)3 安装C-Free 5.0 (2)4 C-Free使⽤⽅法 (5)5 运⾏C语⾔代码 (8)5.1 新建源⽂件 (8)5.2 编写源代码 (11)5.3 编译和链接 (12)5.4 运⾏程序 (13)5.5⽅法总结 (15)6 C-Free常见问答 (16)7 C-Free更新 (20)1 C-Free 介绍C-Free是⼀款国产的Windows下的C/C++ IDE,最新版本是 5.0,整个软件才 14M,⾮常轻巧,安装简单。
利⽤本软件,使⽤者可以轻松地编辑、编译、连接、运⾏、调试C/C++程序。
C-Free中集成了C/C++代码解析器,能够实时解析代码,并且在编写的过程中给出智能的提⽰。
C-Free提供了对⽬前业界主流C/C++编译器的⽀持,你可以在C-Free中轻松切换编译器。
可定制的快捷键、外部⼯具以及外部帮助⽂档,使你在编写代码时得⼼应⼿。
完善的⼯程/⼯程组管理使你能够⽅便的管理⾃⼰的代码。
2 C-Free 的软件特性1、C-Free⽀持多编译器,可以配置添加其他编译器;⽬前⽀持的编译器类型:(1) MinGW 2.95/3.x/4.x/5.0(2) Cygwin(3) Borland C++ Compiler(4) Microsoft C++ Compiler(5) Open Watcom C/C++(6) Digital Mars C/C++(7) Ch Interpreter2、增强的C/C++语法加亮器,(可加亮函数名,类型名,常量名等);3、 C-Free增强的智能输⼊功能;4、可添加语⾔加亮器,⽀持其他编程语⾔;5、可添加⼯程类型,可定制其他的⼯程向导;6、完善的代码定位功能(查找声明、实现和引⽤);7、代码完成功能和函数参数提⽰功能;8、能够列出代码⽂件中包含的所有符号(函数、类/结构、变量等);9、⼤量可定制的功能可定制快捷键可定制外部⼯具可定制帮助(可⽀持Windows帮助、Html帮助和在线帮助);10、彩⾊、带语法加亮打印功能;11、在调试时显⽰控制台窗⼝;12、⼯程转化功能,可将其他类型的⼯程转化为C-Free格式的⼯程,并在C-Free中打开。
c语言程序设计第五版
![c语言程序设计第五版](https://img.taocdn.com/s3/m/c1a4221ea9956bec0975f46527d3240c8447a1eb.png)
c语言程序设计第五版C语言程序设计第五版C语言,作为计算机编程语言的元老之一,自1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发以来,一直以其高效、灵活和强大的特性在软件开发领域占据着重要地位。
随着计算机科学的发展,C语言也在不断地更新和改进,以适应新的编程需求和硬件环境。
《C语言程序设计》这本书,作为学习C语言的经典教材,已经发行到了第五版,它不仅包含了C语言的基础知识,还涵盖了许多高级特性和最佳实践。
第一部分:C语言基础1. C语言概述C语言是一种过程式编程语言,以其简洁的语法和对底层硬件的控制能力而闻名。
C语言的设计哲学是提供足够的功能来实现复杂的程序,同时保持语言的简洁性。
2. 开发环境搭建在开始编写C程序之前,需要设置开发环境。
这通常包括安装编译器、编辑器和调试工具。
第五版教材会介绍如何在不同操作系统上搭建C语言的开发环境。
3. 基本语法C语言的基本语法包括变量声明、数据类型、运算符、控制结构(如if语句、循环)等。
这些是编写任何C程序的基础。
4. 函数函数是C语言中实现代码复用的重要机制。
教材会介绍如何定义函数、传递参数以及返回值的使用。
第二部分:数据结构与算法5. 数组数组是存储固定大小的同类型元素的集合。
教材会详细介绍一维数组和多维数组的使用,以及它们在程序设计中的应用。
6. 指针指针是C语言中一个强大的特性,它允许程序员直接操作内存地址。
第五版会深入讲解指针的基本概念、指针与数组的关系,以及指针在函数中的应用。
7. 字符串字符串是字符数组的一种特殊形式。
教材会介绍字符串的声明、操作和常用字符串处理函数。
8. 结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的工具。
第五版会讲解如何定义和使用这些数据结构。
第三部分:高级特性9. 预处理器预处理器是C语言编译过程中的一个工具,用于处理源代码中的宏定义、文件包含和条件编译等。
10. 文件操作C语言提供了丰富的文件操作API,允许程序员读写文件。
C-Free使用教程
![C-Free使用教程](https://img.taocdn.com/s3/m/a260171c561252d380eb6efa.png)
C-Free使用教程运行C语言代码前面我们给出了一段完整的C语言代码,就是在显示器上输出“C语言中文网”,如下:1.#include<stdio.h>2.int main()3.{4.puts("C语言中文网");5.return0;6.}接下来,我们就来看看如何通过C-Free 5.0来运行这段代码。
1) 新建源文件图1:新建菜单和保存菜单图2:命名为hello.c,并保存到E:\Demo 目录新建文件后,就可以输入本文开头给出的代码了。
注意:虽然可以将整段代码复制到编辑器,但是我还是强烈建议你手动输入,我敢保证你第一次输入代码会有各种各样的错误,只有把这些错误都纠正了,你才会进步。
本教程后续章节还会给出很多示例代码,这些代码一定要手动输入,不要复制后运行成功了就万事大吉。
3) 编译和链接在C-Free的工具栏中,有三个按钮特别重要,分别为“运行”“编译”和“构建”,如下图所示:图4:常用的几个按钮中会显示编译信息:图5:编译成功图6:编译失败库(暂时可以理解为系统中的一些组件)的支持,.o 必须和系统库组合在一起才能生成 .exe,这个组合的过程就叫做链接(Link)。
的二进制文件了,只是还缺少一些东西,必须由系统库提供。
E:\Demo,终于看到了期待已久的hello.exe。
至此,我们就将C语言代码转换成了可执行文件了。
4) 运行程序运行生成的hello.exe 程序,并没有输出“C语言中文网”几个字,而是会看到一个黑色窗口一闪而过。
这是因为,程序输出“C语言中文网”后就运行结束了,窗口会自动关闭,时间非常短暂,所以看不到输出结果,只能看到一个“黑影”。
我们对上面的代码稍作修改,让程序输出“C语言中文网”后暂停一下:1.#include<stdio.h>2.#include<stdlib.h>3.int main()4.{5.puts("C语言中文网");6.system("pause");7.return0;8.}再次编译并链接,运行生成的hello.exe,终于如愿以偿,看到输出结果了,如下图所示:图7:第一个C语言程序按下键盘上的任意一个键,程序就会关闭。
C Free 5程序调试方法
![C Free 5程序调试方法](https://img.taocdn.com/s3/m/9cf1462c001ca300a6c30c22590102020640f259.png)
C Free 5程序调试方法C Free 5是一款常用的C语言集成开辟环境(IDE),它提供了许多方便的功能,其中最重要的之一是程序调试。
在软件开辟过程中,调试是一个不可或者缺的环节,它可以匡助开辟人员找出程序中的错误并进行修复。
本文将介绍C Free 5中的五种常用的程序调试方法,以匡助读者更好地利用这一强大工具。
第一种调试方法是使用断点。
断点是调试过程中的一个标记点,当程序执行到这个点时会暂停运行,开辟人员可以在此时检查变量的值、观察程序的执行流程等。
在C Free 5中,设置断点非常简单。
只需在代码行的左侧单击鼠标左键即可添加断点,再次单击即可取销断点。
通过设置适当的断点,开辟人员可以有针对性地调试程序,提高调试效率。
第二种调试方法是使用单步执行。
单步执行允许开辟人员逐行执行程序,以便查看程序的执行过程。
C Free 5提供了多种单步执行的方式,如单步进入、单步过程、单步返回等。
这些方式可以匡助开辟人员深入理解程序的工作原理,并找出可能存在的问题。
第三种调试方法是使用观察窗口。
观察窗口可以显示变量的值,开辟人员可以在程序运行过程中实时监测变量的变化。
在C Free 5中,观察窗口可以通过菜单栏的“调试”选项打开,并在需要监测的变量上右键单击选择“添加到观察窗口”。
通过观察窗口,开辟人员可以及时发现变量值的异常或者错误,从而更快地找到问题所在。
第四种调试方法是使用条件断点。
条件断点是一种特殊的断点,惟独当满足特定条件时,程序才会在该处暂停执行。
在C Free 5中,可以通过在断点上右键单击并选择“条件”来设置条件断点。
条件断点可以匡助开辟人员在特定情况下定位问题,提高调试的针对性。
第五种调试方法是使用日志输出。
日志输出是一种将程序运行信息输出到文件中的方法,开辟人员可以通过查看日志文件来了解程序的执行情况。
在C Free 5中,可以使用printf函数将需要输出的信息打印到日志文件中。
通过分析日志文件,开辟人员可以找到程序中的潜在问题,并进行相应的调试。
C语言实验报告
![C语言实验报告](https://img.taocdn.com/s3/m/c14fdf2cf011f18583d049649b6648d7c0c70843.png)
××××实验报告(×-×学年第二学期)课程名称:《C语言程序设计》班级:学号:姓名:实验室(中心)名称:教学单位:年月日实验名称:循环结构程序设计指导教师:实验日期:地点:同组学生姓名:(每人独立完成)实验过程:(可附页)1.写出以下程序的执行结果,并分析其实现的功能。
#include<stdio.h>main(){int i=1,sum=0;while(i<10){sum+=i;i=i+2;}printf("%d\n",sum);}执行结果:实现的功能:求小于10的奇数之和。
3. 比较以下两个程序,得出运行结构并分析原因。
程序一:#include <stdio.h>main(){int a=0;while(a<0){a++;}printf("%d\n",a);}执行结果:程序二:#include <stdio.h>main(){int a=0;do{a++;}while(a<0);printf("%d\n",a);}执行结果:分析2个程序结果不同的原因:程序一先判断是否满足条件再运行,而程序二先运行后再判断,故而输出结果不同。
6. 分析以下程序的运行结果为什么不是6?#include <stdio.h>main(){int i,s;for(i=1;i<=3;i++)s+=i;printf("%d\n",s);}执行结果:运行结果为什么不是6?由于s初始值未给出而导致结果不同。
7.分析以下程序运行后变量i的值。
#include <stdio.h>main(){int i,s=0;for(i=1;i<=100;i++){s+=i;if(s==55)break;}printf("%d\n",i);}分析以下程序运行后变量i的值:10.写出以下程序的输出结果。
C语言常见错误及解决方法
![C语言常见错误及解决方法](https://img.taocdn.com/s3/m/e72fa52ef4335a8102d276a20029bd64783e6219.png)
C语言常见错误及解决方法C语言是一门非常重要的编程语言,但是在学习和使用过程中,常常会遇到一些错误。
这些错误可能会导致程序无法正常运行或产生错误的结果。
在这篇文章中,我将介绍一些C语言常见错误及解决方法,希望对你在学习和使用C语言时能有所帮助。
1.语法错误语法错误是最常见的错误之一,它通常是由错别字、缺少分号、括号不匹配等导致的。
解决这类错误的方法是仔细检查代码,并根据编译器的错误提示进行修改。
2.类型错误类型错误指的是错误地使用了不匹配的数据类型。
比如将整数型赋值给浮点型变量,或者将字符型变量赋值给整型变量等。
解决这类错误的方法是确保变量的数据类型匹配,并进行必要的类型转换。
3.空指针错误空指针错误是指使用了未初始化或已被释放的指针变量。
当你尝试使用这些指针变量时,会导致程序崩溃或产生不可预测的结果。
解决这类错误的方法是在使用指针之前,为其分配内存空间并进行初始化。
4.内存泄漏内存泄漏是指在程序运行过程中,分配的内存空间没有被正确释放。
这会导致内存占用越来越多,最终导致程序崩溃或系统资源不足。
解决这类错误的方法是在不再需要使用一些内存空间时,使用free(函数释放它。
5.数组越界数组越界是指访问数组时超过了其允许的范围。
这会导致程序崩溃或产生不可预测的结果。
解决这类错误的方法是确保数组的索引在有效范围内,并正确使用循环等控制结构。
6.逻辑错误逻辑错误是指程序的逻辑顺序有误,导致程序无法达到预期的目标。
解决这类错误的方法是仔细分析程序的逻辑流程,并进行必要的修改和调试。
7.死循环死循环是指程序进入一个无法正常退出的循环。
这可能是由于循环条件错误或循环体内没有设置循环终止条件所导致的。
解决这类错误的方法是确保循环条件正确,同时在必要的情况下添加循环终止条件。
8.文件操作错误在进行文件操作时,可能会发生文件打开失败、读写错误等问题。
解决这类错误的方法是检查文件路径是否正确、文件是否存在以及对文件的读写权限等,并根据具体情况进行调整。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C Free 5.0 程序的单步调试
创建一份新的代码文件
可直接点击“文件”下的白色图标,或点击“文件”选择“新建”,或按快捷键“Ctrl + N”(C Free 5.0默认情况下新建的代码文件为.cpp 格式,可在“工具”、“环境选项”、“新建文件类型”中更改,C语言标准格式为.c 格式)
基于实例的C程序调试介绍
一、查看变量的内容
# include <stdio.h>
int main(int argc, char* argv[])
{
int i;
int sum;
sum=0;
for(i=1;i<=10;i++)
sum=sum+i;
printf("sum=%d",sum);
return 0;
}
第一步,打开C Free 5.0,输入上面的代码。
第二步,把光标移到“sum=0;”这一行,按F10
它的作用是设一个断点,程序运行到这里时,会停下来。
也就是说,接下来,程序必须通过按
F7键单步运行了。
第三步:按F9 (开始调试)
我们发现有一箭头停留在这句语句上,它指示程序停留的位置,而箭头所在的语句(“sum=0;”)还没有执行。
事实上,我们可以通过看一下内存变量sum的内容来验证。
方法是这样的:
打开“调试”下的“监视”,或者按快捷键“Alt + 3”。
在“监视”的空白处点击鼠标右键,选择“添加监视”。
输入需要监视的变量名,这里输入为sum
这时我们可以在监视窗口中看到sum的内容不为0,而是一个随机的值。
第四步,我们按一下F7(进入),我们发现sum的内容变为0了。
这说明“sum=0;”这句语句被执行了。
我们还可以用同样的方法看一下i的内容。
只需要鼠标点
第六步,一步一步地按F7,我们可以发现在单步执行for循环语句的时候i和sum的内容在不断变化。
当退出循环时,我们发现i的内容为11(因为变量i的内容为11,i<=10这个条件不满足,所以程序退出循环)。
附带提一下,当程序已经执行了“sum=0;”这一句语句后,如果我们直接把光标移到“printf("sum=%d",sum);”,然后按Ctrl+ F8,我们可以直接把上面的for循环都执行了,而不必一步一步地按F7。
在实践中,为了查找程序的逻辑错误,我们往往要单步运行该程序好几遍。
如果已经通过单步调试验证某一段语句(如一个for循环语句或者几个用户定义的函数)正确了,我们就可以用Ctrl+ F8跳过这段语句,直接运行到还未测试的语句。
二、F7(进入)和F8(跳过)的区别
# include <stdio.h>
int add(int m,int n)
{
int s;
s=m+n;
return s;
}
int main(int argc, char* argv[])
{
int i=1;
int j=2;
int sum;
sum=add(i,j);
printf("sum=%d",sum);
return 0;
}
第一步,把光标移到“sum=add(i,j);”,按F10设置断点后按F9开始调试,此时“sum=add(i,j);”这句语句还没有执行。
接下来,如果按F7,则程序单步执行到int add(int m,int n)的函数体,此时箭头停留的位置
如下图所示。
如果按不按F7而按F8,则把int add(int m,int n)内的语句全部执行了(也就是说程序不会单步运行到add函数的里面)
此时箭头停留的位置如下图所示。
也就是说,碰到函数,F7会单步执行函数体的每一句语句,而F8则把函数当作一句普通的C语言语句来执行。
在调试程序的时候,我们可以这样做:如果我们已经通过测试发现某一个函数已经正确,那么我们不必单步执行函数体的每一句语句;否则,我们单步执行函数体的每一句语句,监视相关的变量的内容,通过测试用例检查一下问题出在那里。
三、关于一重指针
我们知道,一个指针是一个变量的地址,是一个常量。
存放一个变量的地址的变量是指针变量。
例如:“int a=1;int m; int *p;p=&a;”说明p是一个指针变量,它的内容为整型变量a的地址。
*p就是p所指向的变量a。
指针变量p指向整型变量a的实质是p存放的是a的地址。
注意:(1)指针和指针变量是两个不同的概念。
(2)在int *p;这里*表示p是一个指针变量; m=*p;这里*和p结合起来,作为一个整体*p,表示p所指向的变量。
也就是说,这两个*的作用是不一样的。
下面我们通过例子来说明这个问题。
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int i=1;
int *p=NULL;
int temp;
p=&i;
temp=*p;
printf("temp=%d,i=%d",temp,i);
return 0;
}
为了程序的可靠性,往往要对指针变量赋初值NULL。
第一步,将光标移动到p=&i;按F10设置断点后按F9开始调试
在“监视”窗口中添加i,p,*p,temp。
第二步,将光标移到“printf("temp=%d,i=%d",temp,i);”,按Ctrl + F8 。
这时我们可以在“监视”窗口中发现i的内容为1,*p的内容为1,p的内容为0x28ff44(注意每次调试时,地址可能不一样,因为编译器为变量分配的地址会变的),temp的内容为1。
*p的内容和temp的内容是一样的。
说明:这里0x28ff44是i的地址,另外,系统每次分配给程序的数据段往往不一样,我们在调试程序时,在“监视”窗口中观察到的指针变量p的内容往往不是0x28ff44,这是正常的。
下面两个小节涉及到具体地址的例子也一样。
四、指针作为函数的参数
#include <stdlib.h>
#include <stdio.h>
void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
int main(int argc, char* argv[])
{
int i=1;
int j=2;
int *address_i=NULL;
int *address_j=NULL;
address_i=&i;
address_j=&j;
swap(&i,&j);
printf("i=%d,j=%d",i,j);
printf("%d %d",*address_i,*address_j);
return 0;
}
函数swap的作用是交换两个内存变量的值。
第一步,将光标移动到address_i=&i;按F10设置断点后按F9开始调试
在“监视”窗口中添加i,j,address_i,,p,q,*p,*q,temp。
第二步,将光标移到swap(&i,&j);按Ctrl+F8。
这时我们可以发现address_i的内容为0x28ff44(对应&i),address_j的内容为0x28ff40(对应&j)。
第三步,按F7,进入到函数swap的函数体,这时我们发现“监视”窗口中p的内容为0x28ff44(对应&i ),q的内容为0x28ff40(对应&j)。
此时,“监视”窗口中address_i,address_j,i,j都出现了“未知”这样的信息,这是因为当前程序执行到了函数swap的函数体,而“监视”窗口中显示的内容为当前正在执行的函数里的变量和表达式。
为此,我们通过观察*p的内容来观察i的内容,通过观察*q的内容来观察j 的内容。
(这里涉及到了形参和实参的对应关系,p对应&i,q对应&j )
第四步按F7执行temp=*p;此时,temp的内容1,如下图所示。
这里指针变量p放了整型变量i的地址,所以p指向i,所谓的指向其实就是一个变量放了另一个变量的地址。
第五步,按F7执行*p=*q;
第六步,按F7执行*q=temp;
这样变量i和变量j的内容交换了。
说明:
由于读者执行程序时,得到的相关变量的地址值往往和这个例子中的地址值不一样,建议读者也按照本文的方法,画一画上面的图,能加深对指针的理解。
不管地址怎么变, p的内容和address_i的内容一样,q 的内容和address_j的内容一样。