c++ - 输出不如预期
问题描述
我的程序的想法是打印 n 的单个数字。但相反,它会在第一行一次打印所有数字,并在后续行中打印一堆零或垃圾值。我想访问每个单独的数字,就像我们可以使用数组一样。假设输入是 1234,为什么不打印 1\n2\n3\n4?
#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main()
{
int* n=(int*)malloc(1000*sizeof(int));
cin>>*n;
int len;
len = log10(*n) + 1;
for(int i=0;i<len;i++)
{
cout<<n[i]<<endl;
}
}
解决方案
出于某种原因,你认为
int* n=(int*)malloc(1000*sizeof(int));
cin>>*n;
将读取一个数字并将每个数字放入动态数组的不同元素中n
。如果发生这种情况,那么您的其余代码将起作用(有点)。但当然不是。相反,读取的数字被放入*n
(或者,同样的东西,n[0]
),其余的动态数组元素未初始化,这解释了您看到的垃圾值。
我很难理解为什么您认为您的代码可能会按照您想要的方式运行。我猜您只是一个乐观的人,并认为如果您足够努力,编译器就会理解。这似乎是初学者中相当普遍的态度。不幸的是,编程不是那样的。
推荐阅读
- php - 如何解决此 CodeIgniter 的“函数参数太少”错误?
- java - 在 Android Studio 中的函数调用之前更改按钮文本
- reactjs - React Link 在相同的 url 类型 dom 上不起作用
- google-analytics - BigQuery Google Analytics:如果会话的第一次点击的自定义维度具有特定值,则计算会话数和目标完成情况
- r - 子集复杂数据集
- firebase - 我应该如何在 Vue 组件中引用 firebase 数据?
- scala - 在 SPARK DataFrame 上循环
- r - 如何动态地将 curl 变量发送到管道工功能?
- python - 如何使用数据框的 column_name 作为行的值?
- r - R markdown 无法识别加载的 LaTeX 包