Сообщение Re: C: Не проверяет размер массива. от 25.03.2015 6:39
Изменено 25.03.2015 6:40 VTT
k55>Подскажите пожалуйста это так и должно быть что C компилятор не проверяет размер передаваемого массива в функцию? (Я ожидал обратное)
Во-первых вы передаете не массив, а указатель на массив (это далеко не одно и то же).
Во-вторых нормальные компиляторы очень даже ругаются на несовместимость указателей. Возможно это просто ideone подавляет предупреждения.
gcc:
VS (c /TC)main.c:13:3: warning: passing argument 1 of 'Myfunc' from incompatible pointer type [enabled by default]
Myfunc(&array);
^
main.c:3:5: note: expected 'int (*)[6]' but argument is of type 'int (*)[7]'
int Myfunc(int (*MacArray)[6])
main.c(13): warning C4048: different array subscripts : 'char (*)[6]' and 'char (*)[7]'
k55>Подскажите пожалуйста это так и должно быть что C компилятор не проверяет размер передаваемого массива в функцию? (Я ожидал обратное)
Во-первых вы передаете не массив, а указатель на массив (это далеко не одно и то же).
Во-вторых нормальные компиляторы очень даже ругаются на несовместимость указателей. Возможно это просто ideone подавляет предупреждения.
gcc:
VS (c /TC)main.c:13:3: warning: passing argument 1 of 'Myfunc' from incompatible pointer type [enabled by default]
Myfunc(&array);
^
main.c:3:5: note: expected 'int (*)[6]' but argument is of type 'int (*)[7]'
int Myfunc(int (*MacArray)[6])
main.c(13): warning C4048: different array subscripts : 'int (*)[6]' and 'int (*)[7]'