Я компилирую следующий код в своем m/c с использованием кодовых блоков и mingw32-gcc.exe v.4.8.1 (tdm-2).Вне массива элементов, которые печатаются с использованием gcc в Win8
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[8] = {3,1,10,-1,7,2,-8,1};
int b[8] = {3,1,10,-1,7,2,-8,1};
int i=0,alength = (int)sizeof(a)/sizeof(a[0]);
for(i = 0; i < alength; i++){
if(a[i] > a[i+1]){
a[i+1] = a[i] + a[i+1];
a[i] = a[i+1] - a[i];
a[i+1] = a[i+1] - a[i];
}
}
printf("Original array size is %d \n", alength);
printf("Original array elements are given below: \n");
printf("Sizeof(a) is %d \n", sizeof(a));
for(i = 0; i < alength; i++){
printf("\n b[%d] = %d", i, b[i]);
}
for(i = 0; i < alength; i++){
printf("\na[%d] = %d", i, a[i]);
}
}
Это дает мне следующий результат. Здесь для каждого массива печатаются два дополнительных элемента.
Original array size is 10
Original array elements are given below:
Sizeof(a) is 32
b[0] = 3
b[1] = 1
b[2] = 10
b[3] = -1
b[4] = 7
b[5] = 2
b[6] = -8
b[7] = 1
b[8] = 1
b[9] = 3
a[0] = 1
a[1] = 3
a[2] = -1
a[3] = 7
a[4] = 2
a[5] = -8
a[6] = 1
a[7] = 8
a[8] = 10
a[9] = 9
Но компиляция того же кода в online compiler дает правильный результат. ОС - Win8 64bit. Любая помощь в объяснении и разрешении разницы будет оценена.
Спасибо за исправление ошибки при доступе к массиву из привязанного. –