您的位置:程序门 -> c/c++ -> c++ 语言



请教:一个奇怪的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教:一个奇怪的问题[已结贴,结贴人:jie_cs]
发表于:2007-08-16 11:20:28 楼主
在vs2005平台下:

#include   <stdio.h>

int   main()
{
char   *p,   *q;
p   =   "xyz ";
q   =   p;
q[1]   =   'a ';

printf( "%c\n ",   q[1]);
printf( "%s\n ",   q);

return   0;
}
输出的结果是:
a
xyz

而下面的程序
#include   <stdio.h>

int   main()
{
char   *p,   *q;
p   =   "xyz ";
q   =   p;
q[1]   =   'a ';

printf( "%s\n ",   q);
printf( "%c\n ",   q[1]);

return   0;
}
输出的结果是:
xyz
y

在tc2.0平台下:q[1]   =   'a ';是真的把x替换掉了

请教各位大侠,能给我解释一下吗?
先谢谢了!
发表于:2007-08-16 11:25:491楼 得分:5
q[1]   =   'a ';

是修改不了的。

你运行没出错么?
发表于:2007-08-16 11:26:372楼 得分:3
#include   <stdio.h>

int   main()
{
char   *p,   *q;
p   =   "xyz ";
q   =   p;
q[1]   =   'a ';

printf( "%c\n ",   q[1]);
printf( "%s\n ",   q);

return   0;
}


在vs2005回当机吧
发表于:2007-08-16 11:27:053楼 得分:0
在tc可以是运行,因为tc里好象是可以修改
发表于:2007-08-16 11:29:074楼 得分:0
基本没用过经典的tc

所以不知道,哈哈!
发表于:2007-08-16 11:29:525楼 得分:3
q[1]   =   'a ';是真的把x替换掉了

这个语句不就替换掉嘛?对着呢

上面2断程序运行结果也正确啊..没什么问题
发表于:2007-08-16 11:33:136楼 得分:0
该成char   p[10],q[10];

应该运行结果正确。

char   *p,*q;是不允许修改p指向的内容的。
发表于:2007-08-16 12:48:247楼 得分:0
上面代码都能正常的运行,我测试过了
就是不清楚是什么原因,结果太奇怪了

如果用char   p[10],q[10];定义,那就好理解了,因为编译器分配了空间。

是不是p   =   "xyz ";中,“xyz ";是常量,所以不能修改?
发表于:2007-08-16 13:58:208楼 得分:8
试图修改常量,代码这么写本身就是不对的,至于不同编译环境结果不同   ,那就是编译工具的问题了。
发表于:2007-08-16 16:02:549楼 得分:5
vc6下.c文件,编译通过但是运行出错。
发表于:2007-08-16 16:35:5910楼 得分:8
修改字符串常量,

应该是一个运行期的错误
发表于:2007-08-16 17:23:0511楼 得分:8
xyz   不允许修改。   修改的都是错的。
发表于:2007-08-16 17:33:2212楼 得分:0
定义为const,tc   让修改的   ,应该是错误的。


快速检索

最新资讯
热门点击