免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10319 | 回复: 52
打印 上一主题 下一主题

指针变量初始化----内存中怎么做的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-14 12:43 |只看该作者 |倒序浏览
我记得在谭浩强的c语言的教科书中,曾经说过将字符串变量赋给一个字符串指针变量后,不能修改该字符串中的字符的值。
是这么写的吗?手头上没有这本书,记不大清了。例如:
char* p="ABCD";
我想了一下,常量是存放在数据区的,而定义字符串指针变量是在栈区,
就像上面,常量"ABCD"在数据区;
那么给变量P赋值是个什么动作呢?是将数据区对应的"ABCD"内容的拷贝复制到指针p指向的栈区域吗?
将常量赋给变量P,书上的意思是说数据区的常量不能修改,但是复制后的p指向的"ABCD"可以修改吗?
请教中。。。。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-01-14 12:50 |只看该作者

指针变量初始化----内存中怎么做的?

^_^,好好理解一下指针吧。把人家的地址拿过来就得了,嘎哈非得拷贝啊?

论坛徽章:
0
3 [报告]
发表于 2005-01-14 14:57 |只看该作者

指针变量初始化----内存中怎么做的?

斑竹大人,请指教,"ABCD"是不是一个常量?将他赋给变量指针p,我的理解对不对?(我希望是不对)

话不在多,精辟就行!

论坛徽章:
0
4 [报告]
发表于 2005-01-14 15:03 |只看该作者

指针变量初始化----内存中怎么做的?

的确不对。

是把存储这个常量的内存的地址赋给变量p 。Get it?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-01-14 15:05 |只看该作者

指针变量初始化----内存中怎么做的?

"ABCD"是常量,在text区,只读。但是常量也有地址啊,将这个地址给p有啥不行吗?然后就可以根据p对'ABCD'进行读操作了。一般的OS是禁止写操作的,不过在DOS下仍然可以写。^_^。

论坛徽章:
0
6 [报告]
发表于 2005-01-14 15:07 |只看该作者

指针变量初始化----内存中怎么做的?

如果是楼上讲的这样,那么其实p指向的就是内存数据区中的"ABCD"常量,
常量不是不可以修改的吗?可是我在程序中:*p[2]='h',再打印出来,p已经改变了,

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-01-14 15:12 |只看该作者

指针变量初始化----内存中怎么做的?

[quote]原帖由 "penda"]俅蛴〕隼矗琾已经改变了,[/quote 发表:


你这个和楼主的不是一回事。要注意区别:

char str[]="hello world";
char *str="hello world";
char str[256]="hello world";

这三个都是有区别的。

另外是否可以读写,是OS的事情,一般是是说的惯例。C不会阻拦程序员做任何事情的。

其实,在DOS下,连NULL都是可以写的,你试过吗?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-01-14 15:15 |只看该作者

指针变量初始化----内存中怎么做的?

[quote]原帖由 "aero"]你这个和楼主的不是一回事。[/quote 发表:

他不就是楼主么?   

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2005-01-14 15:16 |只看该作者

指针变量初始化----内存中怎么做的?

原帖由 "yuxh" 发表:

他不就是楼主么?   


   大意了。

论坛徽章:
0
10 [报告]
发表于 2005-01-14 15:22 |只看该作者

指针变量初始化----内存中怎么做的?

GCC下

要想字符串常量可以写,gcc -fwritable-strings yourprog.c

即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP