| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 855 人关注过本帖
标题:问个关于动态分配内存的问题
只看楼主 加入收藏
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
结帖率:70%
收藏
 问题点数:0 回复次数:6 
问个关于动态分配内存的问题
#include< stdio.h >
#include <malloc.h>
int main(void)
{
    int a,b,c,*p;
    printf("请输入元素的个数\n");
    scanf("%d",&a);
    p=(int *)malloc(a);
    printf("请输入元素\n");
    for (b=0;b<a;b++)
        scanf("%d ",&p[b]);
    for (c=0;c<a;c++)
        printf("%d ",p[c]);
}


      程序执行后   我输入3   然后要输入元素   但是要输入4个元素才能输出   输出是正确的但是输入的时候为什么要多输入一个元素呢?

     比如   它提示请输入元素个数  —》3   请输入元素 -》 3 4 5   它就不会输出   如果改成 3 4 5 6  它就会输出 3 4 5   。。。
搜索更多相关主题的帖子: 内存 include 元素 
2011-10-10 18:36
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
p=(int *)malloc(a * sizeof(int));

My life is brilliant
2011-10-10 20:46
easonchanel
Rank: 2
等 级:论坛游民
帖 子:18
专家分:41
注 册:2011-8-23
收藏
得分:0 
2楼正解!
2011-10-10 21:35
pkwangxinjun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:170
注 册:2010-8-29
收藏
得分:0 
scanf("%d ",&p[b]);“%d ”不能有空格 具体因为什么 我还在超找当中
2011-10-10 22:22
lj2lin
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2011-10-10
收藏
得分:0 
scanf("%d ")  //这个函数里面多了一个空格   等于你要多输入一个任意的字符  如果你输入"3_4_5_"  "  ‘_’ 代表空格  的出来的结果和输入“3_4_5”回车后再输入’5‘  是一样的效果
2011-10-10 23:04
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
简单点 不用动脑 也是非常值得推荐的惯用法:
p=malloc(sizeof(*p)*a);
经典C喜欢强制转换的做法没必要


[ 本帖最后由 khaz 于 2011-10-11 00:36 编辑 ]
2011-10-11 00:24
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
收藏
得分:0 
回复 5楼 lj2lin
谢谢  我的问题解决了   确实是你说的问题
2011-10-11 12:34
快速回复:问个关于动态分配内存的问题
数据加载中...
 
   



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

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