Информация об изменениях

Сообщение Re: C: Не проверяет размер массива. от 25.03.2015 6:39

Изменено 25.03.2015 6:40 VTT

Здравствуйте, k55, Вы писали:

k55>Подскажите пожалуйста это так и должно быть что C компилятор не проверяет размер передаваемого массива в функцию? (Я ожидал обратное)


Во-первых вы передаете не массив, а указатель на массив (это далеко не одно и то же).

Во-вторых нормальные компиляторы очень даже ругаются на несовместимость указателей. Возможно это просто ideone подавляет предупреждения.
gcc:

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])

VS (c /TC)

main.c(13): warning C4048: different array subscripts : 'char (*)[6]' and 'char (*)[7]'

Re: C: Не проверяет размер массива.
Здравствуйте, k55, Вы писали:

k55>Подскажите пожалуйста это так и должно быть что C компилятор не проверяет размер передаваемого массива в функцию? (Я ожидал обратное)


Во-первых вы передаете не массив, а указатель на массив (это далеко не одно и то же).

Во-вторых нормальные компиляторы очень даже ругаются на несовместимость указателей. Возможно это просто ideone подавляет предупреждения.
gcc:

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])

VS (c /TC)

main.c(13): warning C4048: different array subscripts : 'int (*)[6]' and 'int (*)[7]'