2行代码!!着急,请大家帮忙看看!!!

yiruirui0507 2010-03-30 11:57:07
char *word ="frame";
能用指针改变这个字符串吗?
word[1]="l";
主要我是想知道为什么?
希望大家能够分析详细点,让我也能明白其中的原因,先说谢谢了!!!
...全文
185 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
magic7004 2010-03-30
  • 打赏
  • 举报
回复
楼主想知道为什么?去看生成的汇编代码吧
yuanweihuayan 2010-03-30
  • 打赏
  • 举报
回复
不行,因这这样定义表示这个指针指向的是一个常量(const)字符串,是不能被改变的。
如果想要改变的话,最好是用
JYH1238 2010-03-30
  • 打赏
  • 举报
回复
the behavior of a program that attempts to alter a string literal is undefined

TCPL书中的原话
lucasma.eth 2010-03-30
  • 打赏
  • 举报
回复
word是常量字符串,在静态存储区, 是不可改变的.
想改变的话就定义数组吧,像这样:
char chArray[] = "frame";
昵称很不好取 2010-03-30
  • 打赏
  • 举报
回复
#include <stdlib.h>
#include <stdio.h>

int main()
{
char *p1 = "hello";
char *p2 = "hello";
printf("%p %p\n",p1,p2); //你会发现,p1和p2的地址相同,同指向静态区的同一个"hello"

return 0;
}
  • 打赏
  • 举报
回复
不行,因这这样定义表示这个指针指向的是一个常量(const)字符串,是不能被改变的。
如果想要改变的话,最好是用
char word[] = "frame";
昵称很不好取 2010-03-30
  • 打赏
  • 举报
回复
存储在静态区的字符串是只读的~~
superhard_d 2010-03-30
  • 打赏
  • 举报
回复
不能,程序运行会报错,因为char *word ="frame";这样定义,word放在静态存储区,不可以被改变。
liuzq3035 2010-03-30
  • 打赏
  • 举报
回复
*word 为指向静态存储区的指针,因此不能更改
wj198895 2010-03-30
  • 打赏
  • 举报
回复
word[1]能代表一个字符 而不能赋值给它一个字符串变量
可以这样word[1]=‘l’;

eTouX 2010-03-30
  • 打赏
  • 举报
回复
不可以的,因为这样字符串是常字符不可以修改的。如果这样就可以了:

char * p = (char*) malloc(6);
strcpy(p,"hello");
youqika 2010-03-30
  • 打赏
  • 举报
回复
不能,生成的二进制文件中不仅有代码段、数据段、未初始化数据段,还有只读数据段
像"hello"这样的数据会被编译器放到只读数据段,这个段属性是只读的,被大家共享,
所以就会如四楼所说的指向同一地址,任何对只读段(如代码段、只读数据段)的修改
都会引发操作系统异常而使程序崩溃,当然有些编译器不支持只读数据段则没有问题
dreamhunter_lan 2010-03-30
  • 打赏
  • 举报
回复
不能改变字符串常量,但可以编译通过~运行就崩溃了
  • 打赏
  • 举报
回复
4楼解释 精辟
xiuxianshen 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhao4zhong1 的回复:]
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
计算机组成原理→DOS命令→汇编语言→C语言、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言、架构……
[/Quote]
无数次发现这个回帖。。。
赵4老师 2010-03-30
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
计算机组成原理→DOS命令→汇编语言→C语言、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言、架构……

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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