奥普瓯江 发表于 2017-6-23 08:43:32

一维数组不定义元素数量只初始化为什么会发生溢出

本帖最后由 奥普瓯江 于 2017-6-23 08:52 编辑

不知道片原因是什么还请各位大神给讲解一下麻烦
我用的系统是linux系统,编译用的是GCC,编译的,参数是 gcc -g    ......- o.......
#include<stdio.h>
#include<stdbool.h>
int main()
{
                int a, e, g, h;
                int count;             //最大值
                int i,f;               //计算循环值
                int j = 0;             //输出循环值
                int first[] = {0};//A输出项
                int max[] = {0};    //B输出项
                int yes;   //C输出项

                bool yan = true;       //判定变量
                char c;




                printf("请输入一个整数: ");
                scanf("%d", &count);




                for( a = 3, i = 0; a <= count; a++, i++ )       
                {
                                h = 0;
                                first = a;
                                //计算
                                max = a * a * a;
                                e = a * a - a + 1;
                                for (f = 0; !(h == max); f++)
                                {
                                                if ( f == 0 )
                                                {
                                                                g = e;
                                                }
                                                else
                                                {
                                                                g = e + 2;
                                                                e = g;
                                                }
                                                yes = g;
                                                h = h + yes;
                                               
                                }
                }

               
                //判断
                if (!(h == 0))
                {
                                printf("经验证,3 ~ %d 之间所有的整数均符合尼科切斯定理!\n\n", count);
                                printf("是否打印所有的式子(y/n): ");
                                getchar();

                                scanf("%c", &c);

                                if ( c == 'n')
                                {
                                                yan = false;
                                }
                               
                }
                else
                {
                                printf("验证失败:整数%d无法找到对应的连续奇数!\n", count);

                }
               




                //输出
                if(yan)
                {

               
                                for ( a = 3, i = 0; a <= count; a++, i++ )       
                                {
                                                printf("3^%d = %d =", first, max);

                               
                                               for ( j = 0; yes != 0; ++j)
                                                {
                                                                if( i == 0)
                                                                {
                                                                                printf( j ? " + %d" : " %d",yes);
                                                                }
                                                                else
                                                                {
                                                                                if ( j < 2 )
                                                                                {
                                                                                                printf( j ? " + %d" : " %d",yes);
                                                                                }
                                                                                else
                                                                                {
                                                                                                if (yes == 0)
                                                                                                {
                                                                                                                printf(" ... + %d", yes);
                                                                                                }
                                                                                                else
                                                                                                {
                                                                                                                continue;
                                                                                                }
                                                                                }
                                                                }
                                                }
                                                printf("\n");
                                }
                }
                return 0;
}

ba21 发表于 2017-6-23 09:42:35

int first[] = {0};// 初始化为0,意思是为第1个元数初始化为0,其它元素编译器自动填0。不定义数量编译器认为只有一个元素。

ColbySuns 发表于 2017-6-23 23:00:11

不定义编译器会根据你的初始化推断你的长度
页: [1]
查看完整版本: 一维数组不定义元素数量只初始化为什么会发生溢出