| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:动态数组定义问题[online]
取消只看楼主 加入收藏
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
结帖率:97.5%
收藏
已结贴  问题点数:20 回复次数:3 
动态数组定义问题[online]
    void check(int *p,int n);
    int *p1,n;
    printf("输入N个学生,打印出不及格学生的成绩\n");
    while(scanf("%d",&n)!=EOF)
    {
        p1=(int *)malloc(n * sizeof(int));
        for(int i=0;i<n;i++)
        {
            scanf("%d",p1++);                -----------这里用p1+i的方式输入结果是正确的(以4个字节存储)

            printf("%d ",p1++);              -----------但是用p1++的方式输入结果是错误,(以8个字节随机存储)
我想问下是什么原因导致这样的结果,原理是怎么样的。
如果是数组(a[i],*p=a)的话就可以以a+i,p++的方式输入,用*(a+i)和*(p++)输出。
搜索更多相关主题的帖子: online 动态 
2017-03-13 19:19
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 2楼 ehszt
*p1结果也是不正确的,必须要用数组的方式输入输出才正确。我看了p1++这种是8个字节存储。p+i这种是4个字节存储
2017-03-13 19:26
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 4楼 ehszt
你帮我看看 我打印出来错误
#include<stdio.h>
#include<stdlib.h>
int main()
{
    void check(int *p,int n);
    int *p1,n;
    printf("输入N个学生,打印出不及格学生的成绩\n");
    while(scanf("%d",&n)!=EOF)
    {
        p1=(int *)malloc(n * sizeof(int));
        for(int i=0;i<n;i++)
        {
            scanf("%d",p1++);

            printf("%d ",*p1++);
            //check(p1,n);
        }
    }
    return 0;
}
/*void check(int *p,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        //if(*(p++)<60)
        //printf("%d ",*(p++));
    }
}
*/
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-03-13 19:41
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 7楼 alice_usnet
谢谢!明白了地址加了4个字节
2017-03-13 19:57
快速回复:动态数组定义问题[online]
数据加载中...
 
   



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

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