См. Следующую программу Я думаю, что это отличается от объявления переменных внутри l oop, потому что они занимают постоянное пространство, поэтому, как только они будут выделены, этого будет достаточно, но в случае массива размер массива является переменным (в приведенной ниже программе размер преднамеренно остается маленьким) что, если следующий размер повторно объявленного массива будет большим или из-за некоторой проблемы с размером, он будет повторно объявлять массив в каком-то другом месте?. Играя с ним, я заметил, что каждый повторно объявленный массив был построен путем расширения той же памяти ранее объявленного array. Есть ли вероятность, что он не может быть расширен для недавно объявленного массива?
#include<stdio.h>
int main(){
int n = 5;
while(5){
int a[n];
for(int i = 0; i < n ; ++i){
a[i] = 0;
}
f[n--] = a;
if(n == 0){
break;
}
}
Итак, здесь Array a [n] объявляется несколько раз разных размеров,
- Что происходит с предыдущим объявлением?
Пожалуйста, объясните, что происходит в этой программе, почему она выводит ноль в качестве содержимого?
#include<stdio.h>
int* f[10];
int main(void) {
int n = 5;
while(5){
int a[n];
for(int i = 0; i < n ; ++i){
a[i] = 5;
}
f[n--] = a;
if(n == 0) break;
}
printf("\ndone\n");
while(++n < 5){
for(int i = 0; i < n; ++i){
printf("\nat size = %-3d : base address = %-7d : a[%d] = %-4d at"
"address = %-7d ", n , f[n],i, *(f[n]+i), (f[n]+i));
}
printf("\n\n");
}
return 0;
}