Что выведет на экран следующая программа (если нужно, то можно наложить некоторые ограничения на среду выполнения).
const char* a = "abcde";
const char b[] = "abcde";
printf("%d %d\n", sizeof(a), sizeof(b));
наш чат алгоритмистов
Решение: Выведет на экран:
4 6 (для 32-битной системы)
или
8 6 (для 64-битной системы)
Объяснение:
a - это указатель:
sizeof(a) возвращает размер указателя (4 байта для 32-битной ОС, 8 байт для 64-битной)
Не зависит от длины строки
b - это массив символов:
sizeof(b) возвращает размер всего массива
Строка "abcde" занимает 5 символов + 1 байт для нуль-терминатора \0
Итого: 6 байт
Ключевое различие:
Указатель хранит только адрес (фиксированный размер)
Массив хранит все элементы (размер зависит от содержимого)
@codeof_art