免费注册 查看新帖 |

Chinaunix

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

关于char *ptr, ptr指针运算问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-10 17:08 |只看该作者 |倒序浏览
代码中包含
char *ptr = "hello world";
(*ptr)++  //此句错误,但是4月一些公司的笔试出现过
在linux下 为 段错误
在vc下是 写错误

(*ptr)++ 并不是 我认为的 先 ptr所指向的当前字母ASICC加1
解释下 谢谢

论坛徽章:
0
2 [报告]
发表于 2011-08-10 17:20 |只看该作者
你的ptr指向一个静态内存,当你用(*ptr)++给静态内存赋值的时候会报错
如果你定义ptr是一个数组则不会出现这个问题  
char ptr[] = "hello world"

论坛徽章:
0
3 [报告]
发表于 2011-08-10 18:30 |只看该作者
回复 2# libin1201119

那我如果还是要这样
但是 我希望 将"Hello World!" 的 H e l l ASCII码加一
变成          "Ifmmo World!"  怎么做
还是 要  char *ptr = "Hello World"
使用 ptr 来做

(注: 不管ptr是数组还是指针, 不是总要给 Hello World
分配内存吗? 静态内存 动态内存, 指针就是 静态内存 无法改变其值?)

QQ截图未命名.jpg (4.73 KB, 下载次数: 19)

QQ截图未命名.jpg

论坛徽章:
0
4 [报告]
发表于 2011-08-10 18:30 |只看该作者
上面那个图  不是的

论坛徽章:
0
5 [报告]
发表于 2011-08-10 18:51 |只看该作者
char *ptr = "Hello World"
char *p2 = ptr;
(*p2)++;
这个没准可以

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-11-25 06:20:00
6 [报告]
发表于 2011-08-10 19:25 |只看该作者
代码中包含
char *ptr = "hello world";
(*ptr)++  //此句错误,但是4月一些公司的笔试出现过
在linux下 ...
Fatihyang 发表于 2011-08-10 17:08



    "hello world"  //存在只读数据区 不可更改
  (*ptr)++          //试图更改只读区数据

论坛徽章:
0
7 [报告]
发表于 2011-08-10 19:25 |只看该作者
回复 5# gaomingok


    不行 不纠结了 一般这样赋值字符串的 都是用来提示的 不需要修改

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
8 [报告]
发表于 2011-08-11 08:15 |只看该作者
不应该出现类似 char *ptr = "hello world"; 这样的代码
应该是 const char* ptr = "hello world";

之所以前者不报错,是因为有大量类似代码遗留,C/C++标准网开了一面。但这从来不表示你就可以去修改它

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
9 [报告]
发表于 2011-08-11 08:37 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2011-08-11 08:57 |只看该作者
坛子里至少有一打讨论这个的贴子

记住字面字符串是常量,一般都是存放在只读内存区域就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP