| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:这个程序为什么不报“段错误”
取消只看楼主 加入收藏
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:3 
这个程序为什么不报“段错误”
程序代码:
#include<stdio.h>
int main(){
        int i;
        i=10;
        typedef char (*PP)[8];
        PP p;
        p=(PP)malloc(i*8);
        for(i=0;i<10;i++){
        strcpy(p[i],"123456789");
        //p[i]="1234567";
        printf("%s\n",p[i]);
        }
}
问题1:p应该就只有80个字节的空间,为什么不报段错误?
问题2:注释处的赋值方法替代strcpy所在行为什么会报错?

本人理解不清 还请多多指教!

[ 本帖最后由 khaz 于 2011-4-29 16:03 编辑 ]
搜索更多相关主题的帖子: color 
2011-04-29 15:57
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
我感觉是用了100字节,只分配了80字节
2011-04-29 16:39
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
谢谢 楼上的图是在哪看的?
2011-04-29 21:20
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
以下是引用voidx在2011-4-29 18:03:17的发言:

报错是因为 * char 类型不能被赋值到一个 char[] 类型变量里。
strcpy 不报错是因为它只需要一个合法地址就好,而你给了它一个合法的地址,他也就没有任何怨言了。不过这样是不能真的保存 10 个 "123456789" 的。楼主可以在程序最后 printf("%s\n", p[0]); 看看
* char 是什么类型?怎么没听说过。
p[i]应该是一个指针类型啊?
2011-04-29 21:22
快速回复:这个程序为什么不报“段错误”
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025534 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved