| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1240 人关注过本帖
标题:这个问题如何解决?
取消只看楼主 加入收藏
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
收藏
已结贴  问题点数:10 回复次数:2 
这个问题如何解决?
这段代码在编译器中输入:
3.4 5.6 p
编译器输出结果为:
fil_array:2
show_array:44 2 5 67
show_array1:4.9007e-317 4.88941e-317

为什么程序跳过了show_array1()函数中的输入环节?在
cout<<p[j]<<' ';

这行就输出了4.9007e-317 4.88941e-317这两个奇怪的数字?
如何修改?代码如下:
程序代码:
#include<iostream>
using namespace std;
int fill_array(double ar[],int size){
    int i,count;
    count=0;
    i=0;
    while(cin>>ar[i]&&i<size){
        count++;
        i++;
    }
    return count;
}
void show_array(double ar[],int size){
    cout<<"show_array:";
    for(int i=0;i<4;i++)
        cout<<ar[i]<<' ';
}
double *show_array1(){
    double *b=new double[5];
    for(int i=0;i<5;i++){
        if(!(cin>>b[i]))
            break;
    }
    return b;
}
int main(void){
    double b[8];
    int a=fill_array(b,8);
    cout<<"fil_array:"<<a<<endl;
    
    double c[4]={44,2,5,67};
    show_array(c,4);
    cout<<endl;
    
    double *p=show_array1();
    cout<<"show_array1:";
    for(int j=0;j<=sizeof(p)/sizeof(*p);j++)
        cout<<p[j]<<' ';
    delete [] p;
        
    return 0;
}


[此贴子已经被作者于2020-11-30 22:50编辑过]

搜索更多相关主题的帖子: int double cout count return 
2020-11-30 22:49
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
以下是引用rjsp在2020-11-30 23:33:40的发言:

当 cin>>ar 失败后,cin的状态设为错误,且"p"依然留在输入缓冲区中。

那应该如何读取依然留在输入缓冲区中的'p'呢?我尝试添加以下语句,但也无法读取:
char ch;
while(cin<<ch)
    continue;
2020-12-01 14:26
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
以下是引用rjsp在2020-11-30 23:33:40的发言:
另外,sizeof(p)/sizeof(*p) 是错误的,它等同于 sizeof(double*)/sizeof(double),而非你以为的5

sizeof(double*)是不是获取p指向的内存空间大小?也就是4*5=20?
sizeof(double)是不是获取p指向变量的类型大小?也就是4?
为什么不是5?

[此贴子已经被作者于2020-12-1 20:01编辑过]

2020-12-01 14:33
快速回复:这个问题如何解决?
数据加载中...
 
   



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

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