arrays - 空数组 NULL 的元素是否有价值?
问题描述
我尝试了这个 Armstrong 程序,但发现自己被这个空数组的东西纠缠了。这个程序的工作一直困扰着我一段时间,但似乎仍然无法弄清楚这里有什么问题。是的,所以只是想问一个空或不完整数组的元素分配给什么值?它是 NULL 字符,即'\0'吗?我尝试在一个在线 C 编译器上检查它,这个断言似乎是正确的,但 GCC 告诉我们相反。我尝试了这种解决 Armstrong 问题的方法,这是我的代码:
#include <stdio.h>
#include <math.h>
int main()
{
int num,i,cub,j;
i = cub = 0;
int sto[20];
scanf("%d",&num);
j = num;
while(num != 0)
{
sto[i] = num%10;
num = num / 10;
i++;
}
i = 0;
while(sto[i] != '\0')
{
cub += pow(sto[i],3);
i++;
}
num = j;
printf("cub: %d num: %d\n\n",cub,num);
if(j == cub)
printf("The number is an Armstrong number");
else
printf("The number is not an Armstrong number");
return 0;
}
我知道这个问题还有其他方法,但我正在寻找的是上述问题的答案。
解决方案
该数组中的值将是未定义的。它们可能为零,它们可能是从上次使用堆栈的该部分时发生的任何值。同样的原理也适用于堆内存。
推荐阅读
- c# - C# 使用类型参数将子类转换为父接口失败
- amazon-web-services - Cfn-hup 在更新堆栈时不运行
- javascript - Javascript - 如何按 3 种不同的属性类型对对象数组进行排序?(字符串、整数、布尔值)
- unit-testing - 无法在 GoLand IDE 内的测试套件中运行单个测试?
- javascript - jsp中如何获取表的行索引
- jenkins - 为未来日期安排 Jenkins 工作
- r - R:警告消息:来自秩不足拟合的预测可能具有误导性
- java - sqlite 打开数据库:'./sqlite.db':权限被拒绝
- xamarin - 如何在 Android 的 xamarin 表单中从 customwebview 渲染器更新进度条?
- c# - 如何在 C# Windows 窗体中登录(从 MySQL 服务器/数据库获取数据)?