免费注册 查看新帖 |

Chinaunix

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

又一c指针问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-07 09:24 |只看该作者 |倒序浏览
main()
{
  char* pstrar[3];
  int i;
  for(i=1; i<3; i++)
  {
     pstrar="             ";
  }
  strcpy(pstrar[1], "你好";
  printf(pstrar[2]);
}
假设编译器设置字符串常量为可读写,怎么程序结果会是:你好?

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

又一c指针问题?

你的程序在我机器上运行是会出现Segmentation fault(coredump)的。
aix 5l,gcc 3.3。

论坛徽章:
0
3 [报告]
发表于 2004-01-07 09:48 |只看该作者

又一c指针问题?

如果可以运行的话,你把pstrar[1] ,pstrar[2]都赋成相同的指针,当然会出现你说的情况。看来指针没有领会其含义。

论坛徽章:
0
4 [报告]
发表于 2004-01-07 09:52 |只看该作者

又一c指针问题?

pstrar=" ";

这个是什么意思?有空格吗?

论坛徽章:
0
5 [报告]
发表于 2004-01-07 10:01 |只看该作者

又一c指针问题?

pstrar="",为一空串。
在sco unix下成功运行。

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

又一c指针问题?

这很危险

论坛徽章:
0
7 [报告]
发表于 2004-01-07 10:17 |只看该作者

又一c指针问题?

原帖由 "yangjian73" 发表:
一空串。
在sco unix下成功运行。


我的也出现了
Segmentation fault

是不是strcpy( null ,"你好"的问题?

这样肯定报错。。。

论坛徽章:
0
8 [报告]
发表于 2004-01-07 10:30 |只看该作者

又一c指针问题?

如pstrar="    ",中间为空格
sco unix下成功运行,且结果一样。

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

又一c指针问题?

我谈一谈我的理解。
在那个for循环后,pstrar的值都是一样的,
都是指向同一个字符串,此字符串为空格。
可以把它们的值打印出来就知道了。
如果字符串常量是可修改的,那么你修改了pstrar[1]指向的值
也就是修改了pstrar[2]指向的值。所以打印pstrar[2]的值
和pstrar[1]一样。
如果字符串常量是不可修改的,那么你试图修改它的值,
就会出现Segmentation fault(coredump)了。

论坛徽章:
0
10 [报告]
发表于 2004-01-07 11:02 |只看该作者

又一c指针问题?

我也发表一下我的理解。。

pstrar[3] 是三个char
可是 "你好" 就是用了四个char
所以strcpy(pstrar[1],"你好" 就会冲出边界
所以会出错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP