Кто-нибудь может сказать мне, сколько байтов имеет этот тип данных? - PullRequest
0 голосов
/ 03 октября 2019

У меня есть домашнее задание, которое хочет узнать, сколько байтов имеет этот массив:

char test [] = "test";

Я знаю, что тип данных char имеет 1 байт,Но сколько здесь байтов?

это может быть то же самое?

Спасибо всем!

1 Ответ

2 голосов
/ 03 октября 2019

Массив инициализируется элементами строкового литерала

char test[]="test";

Таким образом, массив имеет столько же элементов, сколько строковый литерал, поскольку размер массива не указан явно.

Строковый литерал в памяти представлен как символьный массив

char literal[] = { 't', 'e', 's', 't', '\0' };

То есть он имеет 5 символов, включая завершающий нулевой символ. Все эти символы используются для инициализации массива.

Таким образом, размер массива равен 5 * sizeof( char ). sizeof( char ) всегда равно 1. Таким образом, размер массива равен 5.

Вы можете проверить это, вызвав стандартную функцию C printf

printf( "sizeof( test ) = %zu\n", sizeof( test ) );

Вот демонстрационная программа.

#include <stdio.h>

int main(void) 
{
    char test1[] = "test";

    printf( "sizeof( test1 ) = %zu\n", sizeof( test1 ) );

    char test2[] = { 't', 'e', 's', 't', '\0' };

    printf( "sizeof( test2 ) = %zu\n", sizeof( test2 ) );

    return 0;
}

Его выход

sizeof( test1 ) = 5
sizeof( test2 ) = 5
...