如此简单的代码到底哪里出错了?(字符串处理)(25分)

  • 主题发起人 主题发起人 liangbowen
  • 开始时间 开始时间
L

liangbowen

Unregistered / Unconfirmed
GUEST, unregistred user!
#include <stdio.h>
int main(int argc, char* argv[])
{
char *p="1234567890";
p[5] = '8';
return 0;
}
 
没有错。
 
p[5]是个6啊
数组是从0开始的
这里指针就是数组的意思
 
编译是没有错,可是运行老是出错,"***.exe遇到问题需要关闭...",可能是内存调用有错吧。
 
to:镜中雪月,
知道。
ps. 编译环境 vc++ 6, xp sp2
 
我是对得[:)]
 
什么你是对的阿?你运行也没问题吗?
 
内存有问题,全局变量分配内存,否则自己分配
#include <stdio.h>
char * p="1234567890";
int main(int argc, char* argv[])
{
//p[5] = '8';
printf("%p",p);
return 0;
}
这样也没问题,要不你就malloc
#include <stdio.h>
char * q="1234567890";
int main(int argc, char* argv[])
{
char *p=q;
//p[5] = '8';
printf("%p",p);
return 0;
}
 
楼主代码在 Toubo C, Borland C 中是正确的。在 VC 中应该:
char str[]="1234567890";
char *p=str;
p[5] = '8';
 
kaida, 这次你答对了。
anso, 不是很明白你所说的,和是否全局变量没关系吧?
 
为什么会这样啊?
 
问题提前
 
http://dev.csdn.net/develop/article/14/14346.shtm
 
谢谢大家,早知道加多点分了。
谢谢tseug.
 
多人接受答案了。
 
后退
顶部