小迪 发表于 2017-8-31 10:52:32

S1E18,动态数组

本帖最后由 小迪 于 2017-8-31 10:54 编辑

刚开始我是拒绝的,因为VS2013不支持


http://a3.qpic.cn/psb?/V142tIWA265iLX/AYB3oEFaIcT.FltyZJtm4X3PHIEKzcBi8hyMS40sPzM!/b/dB4BAAAAAAAA&ek=1&kp=1&pt=0&bo=gAK*AoYCxgIDIHo!&su=010963201&tm=1504144800&sce=0-12-12&rf=2-9

具体的原因,我也不知道,应该是不支持C99,好吧。。。。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>


//        c99标准支持动态数组


int main()
{
        int n ;


        printf("请输入字符的个数:");
        scanf("%d", &n);


        char a;


        printf("请开始输入字符:");
        getchar();


        for (int i = 0; i < n; i++)
        {
                scanf("%c", &a);
        }


        a = '\0';
        printf("你输入的字符串是:%s", a);






        return 0;
}





还有一个就是数组的越界问题:


http://a1.qpic.cn/psb?/V142tIWA265iLX/VJthECN33flXDJe6GRzEaLN8RXI3r6FwwFNzLqXk1oM!/b/dEQAAAAAAAAA&ek=1&kp=1&pt=0&bo=zQWAAvkFkwIDMDI!&su=0149230545&tm=1504144800&sce=0-12-12&rf=2-9


VS2013中C不支持坐标越界,也就是说并没有越界保护机制,直接会报错。

int main()
{
        int a;


        for (int i = 0; i <= 10; i++)
        {
                a = i;
        }


        for (int i = 0; i < 10; i++)
        {
                printf("%d\n", a);
        }






        return 0;


}



这个是根据编译器来的,编译器想干啥就干啥,估计VS2013的编译器比较想让我们查BUG把


就到这吧

页: [1]
查看完整版本: S1E18,动态数组