Я пишу в C учебную программу по шифрованию и Met с неожиданной проблемой:основной() параметры испортите объявления массива
Когда я включаю параметры в main()
функции (как int main(int argc, char* argv[])
) и попытаться объявить отдельный массив символов в моем коде (char array[2] = {'a','b'};
), который не имеет ничего общего с аргументами main()
, этот массив каким-то образом получает длину 8 вместо 2 и некоторый бачок добавляется к нему при попытке распечатать его (например, ab ?iQ?
).
Принимая во внимание, что я объявляю main()
без каких-либо параметров (int main()
), заявленный массив символов ведет себя нормально: получает размер 2 и выводит как ab
.
Есть ли в параметрах main()
ограничения на набор минимальных размеров массивов в коде?
'этот массив как-то получает длину 8 вместо 2', почему вы так говорите? –
, который является значением, возвращаемым функцией strlen (array) –
Вы не можете поместить строку с двумя символами в массив с пространством для 2 байтов. Строка требует 3 байта. Вы можете поместить два байта в массив, но тогда это не строка ... и функции * string * не работают с ним. – pmg