2010年软考程序员下午考试的一题。。。。

qzadsl10000 2011-05-07 01:26:01
char *p,arrChar[100]="texting";
p="texting";
*p='0';
p=arrChar+1;
printf("%d\t%d\n",sizeof(arrChar),strlen(arrChar));
printf("%d\t%d\n",sizeof(char *),strlen(p));

这个有什么错误吗?
为什么我用的编译器编译的时候,*p=‘0’有这句编译时没错,可是运行就会中止呢?
...全文
80 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
maoxing63570 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 visualeleven 的回复:]
引用 2 楼 visualeleven 的回复:
指针没有分配内存空间

囧,看错了,常量不允许修改~
[/Quote]
呵呵
Eleven 2011-05-07
  • 打赏
  • 举报
回复
char *p,arrChar[100]="texting";
char* buf = new char[strlen(arrChar)+1];
p = buf;
*p='0';
p=arrChar+1;
printf("%d\t%d\n",sizeof(arrChar),strlen(arrChar));
printf("%d\t%d\n",sizeof(char *),strlen(p));
delete[] buf;
buf = NULL;
yjueqtd 2011-05-07
  • 打赏
  • 举报
回复
p="texting";
*p = '0'; P指针指向常量了,怎么修改?
jixiang1983 2011-05-07
  • 打赏
  • 举报
回复
楼上几位说的是,p虽然是变量,其值可以修改,但执行 p="texting"; 后,p指向常量区,常量区的值是不能改的,因此 *p = '0'; 会出错.
Eleven 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]
指针没有分配内存空间
[/Quote]
囧,看错了,常量不允许修改~
JJF 2011-05-07
  • 打赏
  • 举报
回复
指针p="texting"赋值后就相当于常量了,常量自然不能在赋值了
TandyT 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 qzadsl10000 的回复:]
char *p,arrChar[100]="texting";
p="texting";
*p='0';
p=arrChar+1;
printf("%d\t%d\n",sizeof(arrChar),strlen(arrChar));
printf("%d\t%d\n",sizeof(char *),strlen(p));

这个有什么错误吗?
为什么我用的编译器编译的时候,*p=……
[/Quote]

你下面这两行:

char *p;
P="texting";

这时,指针p 指向的是常量 "texting"; 这时,你不能修改 p 指向的内容,因为常量是不允许修改的。
所以,运行时就会出错了。
Eleven 2011-05-07
  • 打赏
  • 举报
回复
指针没有分配内存空间
jilonglv 2011-05-07
  • 打赏
  • 举报
回复
p="texting";
你指的是字面值,字面值是不能修改的。你后面*p='0';当然会出错了。
至于编译没出错,而运行出错了。这是因为C++是静态编译的(好像又叫前绑定),
编译的时候不会检查*p='0';,运行到*p='0';时当然出错了。<这里说得不太专业,我也是菜鸟,不过原理就是这样的>
望高手指点!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧