+ 7

Array of size 0

How to explain this behavior in code? Why we can declare array with zero size? https://code.sololearn.com/c94qBa12TtpV/?ref=app

14th Apr 2018, 1:24 AM
Rull Deef 🐺
Rull Deef 🐺 - avatar
4 Antworten
+ 4
Check out this discussion here on this very topic: https://stackoverflow.com/questions/9722632/what-happens-if-i-define-a-0-size-array-in-c-c Compiling it on my machine with the flag -pedantic (I used g++ -pedantic test.cpp), I get the following warning: test.cpp:10:13: warning: zero size arrays are an extension [-Wzero-length-array] int arr[0]; The standards also seem to say that it shouldn't really be allowed.
14th Apr 2018, 1:38 AM
Emma
+ 6
You should know line 11 is overwriting something as arr[0] doesn't allocate storage. I can't tell why it is allowed, but since C++ doesn't verify index out of bounds, I can give you a use for it. Declare a structure with it that you allocate on heap with valid extra storage. struct Array { int size; int storage[0]; } *array; array = maloc(sizeof(int)*(n+1)); array->size = n; for (int i = 0; i < n; i++) array->storage[i] = i;
14th Apr 2018, 2:54 AM
John Wells
John Wells - avatar
+ 5
Thanks a lot
14th Apr 2018, 9:16 AM
Rull Deef 🐺
Rull Deef 🐺 - avatar
- 1
You can do this because you will likely dynamically add data to that array through your program, via an API, or via I/O hooked up to a machine running your program. You can think if an array as a container to store information
18th Apr 2018, 9:38 PM
Steve Halvorson
Steve Halvorson - avatar