社区
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的编译器有啥区别???谢谢!!!
...全文
190
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);这样在任何编译器下应该没有问题。
这些东西可能是有些编译器不够严格而已,
TC2
.0库函数查询 V1.0 破解全过程(原创)
本文详细记录了
TC2
.0库函数查询V1.0的破解过程。先用PEiD.exe查出软件由
VC6.0
编写且未加壳,再用W32Dasm无极版找到关键跳转处,将原字节75改成74完成破解。此外,作者还用CodeFusion写了破解补丁。
PCIE协议-2-事务层规范-Virtual Channel (VC) Mechanism
本文围绕PCIE协议的虚拟通道(VC)机制展开,介绍了VC机制可支持区分流量,解决流控制阻塞问题。阐述了TC到VC映射规则,如TC0到VC0映射固定,其他映射由系统软件决定。还说明了VC和TC的相关规则,包括设备对TC0/VC0的支持、流量控制及排序关系等。
VC++、C++、C和TC有什么区别?
本文详细介绍了C、VC++、C++和TC之间的区别。C语言是一种基础的编程语言,而VC++是微软的Visual C++开发环境,不仅包含C++编译器,还提供集成的调试和开发工具。C++是建立在C基础上的面向对象编程语言。TC,即Turbo C,是Borland公司的旧版C编程环境,现在已经过时。现代开发中,Linux常用GCC,Windows则有Dev-C++、Code::Blocks等开源选项。
PCIe协议学习-TC和VC概念
PCIe协议通过Traffic Class(TC)和Virtual Channel(VC)机制实现服务质量(QoS)。TC是3位字段,支持8种优先级,而VC提供独立电路资源避免阻塞。TC必须映射到VC,其中TC0到VC0的映射是固定的。多个TC可映射到单个VC(MFVC机制),但单个TC
不能
映射到多个VC。该映射关系需在链路两端保持一致,且可通过软件配置。所有设备必须支持TC0/VC0映射,若设备不支持VC能力结构,则只能发送TC0报文。Switch需管理每个端口的独立VC资源,并进行TC-VC转换。该机制
从VC6到VC9移植代码问题总结
本文总结了从Visual C++ 6.0(VC6)升级到Visual C++ 9(VC9)过程中遇到的编译、链接错误及警告,包括环境变量冲突、MFC模板错误、C4996警告、.def文件问题、消息映射宏错误等,并提供了相应的解决方法。移植工作涉及到大量的代码调整和兼容性处理,对于维护旧代码库的开发者具有参考价值。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章