社区
C语言
帖子详情
tc2.0下可以运行,vc6.0为何不能运行?
worldcup
2004-07-23 05:57:48
char *a="aabbcccdefghi";
a[3]='w';
在tc20下输出:a=aabwcccdefghi
而vc60就内存出错,这是为什么??
再如:
char *a="aaa",*b="bbb";
strcpy(a,b);
在tc20下输出:a=bbb
而vc60也内存出错
究竟tc20和vc60的编译器有啥区别???谢谢!!!
...全文
153
9
打赏
收藏
tc2.0下可以运行,vc6.0为何不能运行?
char *a="aabbcccdefghi"; a[3]='w'; 在tc20下输出:a=aabwcccdefghi 而vc60就内存出错,这是为什么?? 再如: char *a="aaa",*b="bbb"; strcpy(a,b); 在tc20下输出:a=bbb 而vc60也内存出错 究竟tc20和vc60的编译器有啥区别???谢谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
worldcup
2004-07-26
打赏
举报
回复
我明白了,谢谢大家的帮助!!!
binglex
2004-07-23
打赏
举报
回复
char *a="aabbcccdefghi";
这样定义a是一个常指针,所指向的内容是readonly 的。
正解
qingyuan18
2004-07-23
打赏
举报
回复
char *a="aabbcccdefghi";
这样定义a是一个常指针,所指向的内容是readonly 的。
whyglinux
2004-07-23
打赏
举报
回复
char *a="aabbcccdefghi";
这是定义了一个字符指针,并使其指向 "aabbcccdefghi" 这个字符串。需要注意的是这个字符串并不是在栈中,而是在静态存储区中。现在的编译器(如VC等)一般把它作为常量对待,不允许更改它。这就是为什么用 VC 6.0 等编译器时用 a[3]='w'; 这样类似的操作更改它时要出错的原因。
然而,在一些旧式的编译器中,包括 TC 2.0 在内,都是把上述字符串作为非常量对待的,可以改变它。所以修改字符串的操作能够成功,就不会出错了。
如果想在现在使用的编译器中把上述字符串作为非常量处理,可借助于编译器的开关选项。例如,如果是GCC编译器,在编译时可加上 -fwritable-strings 选项,从而使常量字符串也编程是可写的。
geesun
2004-07-23
打赏
举报
回复
*(a+3)='w' 可以吗?我自己弄糊涂了!
lbaby
2004-07-23
打赏
举报
回复
char *a="aaa",*b="bbb";
char *a="aabbcccdefghi";
a[3]='w';
在以上的语句中:
a,b指向的区域的内存都是不可以被改变的,任何改变其内容的操作都是非法的
如:
a[0] = 'a';
strcpy(a,"abc");
*a = *b;
如果你要想得到一个内存区域可以改变的字符串数组,可以这样写:
a[] = "aaa";
b[] ="bbb";
freefalcon
2004-07-23
打赏
举报
回复
char *a="aabbcccdefghi"; // 这样写a指向一个字符串常量,a并没有分配内存
a[3]='w'; // 这样使用在VC里便属于非法内存访问,很多编译器都是如此,或者说语言本身就是这样规定的(我没看过标准,或许有错)
tc下为什么可以呢?跟它的实现有关吧,没怎么用过TC,不熟悉
lbaby
2004-07-23
打赏
举报
回复
区别就在于,vc6能让你的错误立即出错而被发现
而tc2一直不声不响直到出错时你还不知哪里错了
geesun
2004-07-23
打赏
举报
回复
char *a="aaa",*b="bbb";
char *a="aabbcccdefghi";
a[3]='w';
这个问题,a不是一个数组,不能够那样操作,没有[]操作。你可以这样操作:
*(a+3)='w',
strcpy(a,b);
这个本来就应该有问题的,a 不过是个指针,你没有给他分配空间,而char *a="aaa"不是给a分配空间,只是定义一个指针指向一个常量,所以应该有问题的
应该改为这样:
char a[4];,*b="bbb"
strcpy(a,b);这样在任何编译器下应该没有问题。
这些东西可能是有些编译器不够严格而已,
清华c语言高级程序设计
实例程序代码,所有程序在
TC2
.0或者在
VC6.0
下调试通过
VC6[1].0上机指导
C语言源程序(后缀名为.c)可以在
VC6.0
或Turbo C2.0(简称
TC2
.0)等很多编译系统或集成环境中编译
运行
,但由于最新版2008年全国计算机等级考试(NCRE)将全面使用
VC6.0
上机环境,所以我们主要介绍
VC6.0
上机环境。
C语言上机软件VC++6.0中文版安装_学习Visual_C++_6.0编程环境的使用
从2008年4月开始,全国计算机等级考试将全面停止Turbo C2.0(简称TC)软件的使用,所有参加二级C语言、三级信息技术、网络技术和数据库技术上机考试的考生,都要在Visual C++6.0(简称VC)环境下调试
运行
C程序。...
C程序高级实例源代码
实例程序代码、按章放置;光盘中所有程序在
TC2
.0或者在
VC6.0
下调试通过。具体的调试环境请参考每章下面的readme.txt。
C实现一个链表类【代码】.rar
C实现一个链表类【代码】,作者 tr0217 (尧思齐 齐尧),是一个通用的C链接表,可以在
TC2
.0、
vc6.0
和gcc5.4.3中编译成功,释放链表所占用的资源,在链表使用结束后必须调用,本链表为单向链表,非常有效。可以用作...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章