vs的数组重叠了???
Posted asdfknjhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs的数组重叠了???相关的知识,希望对你有一定的参考价值。
用visual studio 2017 ,在打素数表时莫名发现另外一个数组被赋值了,搞了好久才明白是数组a最后一个元素 竟然和数组cnt第一个元素共用一个内存 ???
或许是bug或是处于什么目的吧,不过我在 vc++,和 dev c++ 测试了一下都没有这个问题。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #define N (int)10 int a[N]; int cnt[N]; int main(void) { printf("%d ", cnt[0]); a[0] = 1, a[1] = 1; for (int i = 2; i*i <= N; i++) { if (cnt[0] == 1) { printf("什么鬼 %d ", i); } if (a[i] == 0) { for (int j = i*i; j <= N; j += i) { if (a[j] == 0) a[j] = 1; } } } printf("%p %p %p %p ", a, a[N], cnt, cnt[0]); system("pause"); return 0; }
可以看到他们的地址确实重复了。就这样吧,好坑啊!
以上是关于vs的数组重叠了???的主要内容,如果未能解决你的问题,请参考以下文章