首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>cc++>正文

用Win-TC编译与用TC2.0编译的差异

http://www.oklinux.cn  2006-06-25  oklinux收集整理   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

现在有一种在Windows下运行的一种叫Win-TC的C语言源代码编辑工具以小巧的身躯和强大的功能受到很多网友的青睐。但最近有位朋友给我一个关于指针的源程序。用Win-TC编译和英文版TC2.0编译出来的结果截然不同,请看下面的代码:

#include "stdio.h"

main(){

int a=100,*pa=&a,*pp=pa;

printf("a=%d,pa=%d,pp=%d",a,pa,pp);

getch();

}

在Win-TC中编译运行,结果为:a=100,pa=4040,pp=4295。这个结果让人哭笑不得。

在英文版TC2.0中编译运行,结果为:a=100,pa=-60,pp=-60。这个结果很正常。

但是把 printf("a=%d,pa=%d,pp=%d",a,pa,pp); 改成 printf("a=%d,pa=%d,pp=%d",a,*pa,*pp); 则两个编译运行结果相等,都是a=100,pa=100,pb=100。到底问题出在哪里,也许只有Win-TC的作者才能解释。所以劝一下那些用WIN-TC的朋友们写好程序后最好再到英文的TC中编译调试一次。



网友xingchenyiyi 评:

看到了“用Win-TC编译与用TC2.0编译的差异”这片文章。我就文中作者的用法问题作
一解释!程序:

int a=100,*pa=&a,*pp=pa;

printf("a=%d,pa=%d,pp=%d",a,pa,pp);

int a=100很规则,但"&a"代表一个地址,"&"是取地址符号,取得了存储值是100的内
存地址。而"*pa"的用发表示指针地址"pa"中存储的值。"int *pa;"表示指针类型pa中
存储的值是整形。也就是说它可以直接等于常量。此时"*pa=%d"这种用法是把"a"的地
址存储进了"pa"."*pp=pa"这个用法和前面的一样是把"pa"的地址存储进了"pp".其中"pp","pa"都表示地址,而"*pa","*pp"都表示具体的值。打印输出的时候
"printf("a=%d,pa=%d,pp=%d",a,pa,pp);",大家可以看到a是代表数值的,"pa、pp"都代表的是地址,此刻输出就成了"pa、pp"的临时地址。所以会看到"pa=4040,pp=4295"这样的输出是正常的,当然英文版的输出结果"pa=-60,pp=-60",结果是负值,表示有错误。在win-tc下用结果是"pa=-70,pp=-70"。正确的打印输出格式:"printf("a=%d,pa=%d,pp=%d",a,*pa,*pp); "。"*pa,*pp"两个代表数值。结果输出正确。这样才可以和"%d"形成对应关系。


上一篇:C语言学习初次体会   下一篇:新手必看<一>

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·C语言学习初次体会
·新手必看<一>
·新手必看<二>
·C语言漫谈
·利用C语言小程序来解决大问题
·linux c 环境控制篇
·linux C 接口处理篇
·C语言教程第一章: C语言概论
·C语言教程第二章: 数据类型、运算符、表达式
·linux C 信号处理篇
·linux C 文件权限控制篇
·C语言教程第三章: C语言程序设计初步
·C语言教程第四章: 数组
·linux C 进程操作篇
·C语言教程第五章:函数
·linux C数据结构及算法篇
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Turbo C 2.0 认识
·用Eclipse平台进行C/C 开发
·在 Linux 中使用共享对象
·VS:针对Java开发人员的C#编程语言
·使用智能设备扩展在C#中开发自定义控件
·Visual C# 常见问题
·二级C语言实例解答
·一种被忽视的构造和整数溢出重现
·轻轻松松C to C
·与用于 C 的ISO标准保持一致
·用C 的托管扩展针对Windows编程
·运行时和编译时的安全性检查
  阅读排行
·c/c++ 学习-read 函数和 write 函数
·c/c++ 学习-open 函数
·使用 GDB 调试多进程程序
·细述C/C 字符指针数组及指向指针的含
·感触C语言中的面向对象思想
·C语言程序源代码下载
·Linux下C开发环境的构成与安装
·用Eclipse平台进行C/C 开发
·GCC内嵌汇编之语法详解
·C调用Tcl脚本
·Linux下的多进程编程
·TServerSocket和TClientSocket的使用
·C++字符串转换篇
·初学者编程入门:C 指针使用方法
·例解用 VC 6.0 实现 JNI
网摘收藏: