免费注册 查看新帖 |

Chinaunix

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

问个指针问题 [复制链接]

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-12 21:31 |只看该作者 |倒序浏览
问个指针问题,是 pointer on C 上面的原题

关于 *pr++ 作为左值的问题

代码如下附上
这里
                *string++ = *last_str;
                *last_str-- = tmp;
我这边会有问题, *string++作为左值会报错,而书上是可以这么表述的。。。
谁可以Help一下下~


#include <stdio.h>


void reverse_string (char *string)
{
&nbsp;&nbsp;&nbsp;&nbsp;char *last_str;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for(last_str=string; *last_str!='\0';last_str++ )
&nbsp;&nbsp;&nbsp;&nbsp;;

&nbsp;&nbsp;&nbsp;&nbsp;last_str --;

&nbsp;&nbsp;&nbsp;&nbsp;while(string<last_str)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char tmp;
&nbsp;&nbsp;&nbsp;&nbsp;    tmp = *string;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*string++ = *last_str;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*last_str-- = tmp;
&nbsp;&nbsp;&nbsp;&nbsp;}

}

int main()
{
&nbsp;&nbsp;&nbsp;&nbsp;char *test = "SoftWare";

&nbsp;&nbsp;&nbsp;&nbsp;reverse_string(test);
&nbsp;&nbsp;&nbsp;&nbsp;printf("%s",test);&nbsp;&nbsp;&nbsp;&nbsp;
}

论坛徽章:
0
2 [报告]
发表于 2008-10-12 21:49 |只看该作者
主函数中的test没有分配内存,是不是这个原因

论坛徽章:
0
3 [报告]
发表于 2008-10-12 21:53 |只看该作者
test是常量 不能对他进行操作

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-10-12 21:55 |只看该作者

回复 #3 wilbur512 的帖子

觉得这个有点道理。。。

这里如何搞定常量 变量?

论坛徽章:
3
天蝎座
日期:2014-10-25 13:44:312015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:31
5 [报告]
发表于 2008-10-12 21:57 |只看该作者
char test[] = "SoftWare";

论坛徽章:
0
6 [报告]
发表于 2008-10-12 21:58 |只看该作者
reverse_string()函数中的代码应该没什么问题。

主函数中用char test[] = "SoftWare"。

不过应该运行时段错误才对,不应该编译时报左值的错误。你换个编译器试试。

[ 本帖最后由 kiffa 于 2008-10-12 22:07 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-10-12 22:00 |只看该作者
哦,明白了,应该报左值的错误。

论坛徽章:
0
8 [报告]
发表于 2008-10-12 22:05 |只看该作者
-_-! 还是不应该报左值的错误,毕竟有个地址。

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2008-10-12 22:09 |只看该作者

回复 #8 kiffa 的帖子


linux-gcc会报segment Fault的
win-gcc也有类似错误,用VC调,会停在那边左值只读那边

BTW,
char test[] = "SoftWare"
换成了
char *test = "SoftWare"

为什么会是只读了呢?
who解释一下

论坛徽章:
0
10 [报告]
发表于 2008-10-12 22:13 |只看该作者
#include <stdio.h>
int main()
{
int a[10];
int* p=a;
*(p++)=1;
printf("%d\n",a[1]);
return 0;
}


为什么打印出的是随机数

[ 本帖最后由 wilbur512 于 2008-10-12 22:15 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP