开发者社区> 问答> 正文

关于malloc C语言

以下这段代码想要实现通过malloc输入5个整数,例如输入1 2 3 4 5
希望输出也是1 2 3 4 5
为什么输出却是很大的整数就像是这地址一类的?

#include<stdio.h>
#include<stdlib.h>

int main(){
    int n=5,i;
    int *p=NULL ;

    for(i=0;i<n;i++)
    {
        p=(int*)malloc(sizeof(int)*n);
        scanf("%d",p+i);
    }
    printf("%d#%d#%d#%d#%d",*p,*(p+1),*(p+2),*(p+3),*(p+4));
    free(p);

展开
收起
a123456678 2016-06-07 20:11:12 1964 0
1 条回答
写回答
取消 提交回答
  • P在每次for的时候,都申请了一个新的地址,
    而且你Scanf的时候, 是将值写入 p+i 中.
    所以你后面 输出的时候能正确就出了奇了.
    只需要把 malloc 移到for外面 就行了.

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(){
        int n=5,i;
        int *p=NULL ;
    
        p=(int*)malloc(sizeof(int)*n);
    
        for(i=0;i<n;i++)
        {
            scanf("%d", p+i);
        }
        printf("%d#%d#%d#%d#%d",*p,*(p+1),*(p+2),*(p+3),*(p+4));
        free(p);
    }
    2019-07-17 19:30:58
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载