首页 > 解决方案 > 空数组 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;
}

我知道这个问题还有其他方法,但我正在寻找的是上述问题的答案。

标签: arrayscinitializationstorage-duration

解决方案


该数组中的值将是未定义的。它们可能为零,它们可能是从上次使用堆栈的该部分时发生的任何值。同样的原理也适用于堆内存。


推荐阅读