#c #arrays #char #sizeof
#c #массивы #char #sizeof
Вопрос:
Я хочу получить размер массива символов, но я не могу этого сделать
давайте посмотрим
#define MAX 64
char value[MAX]
value = "hi" //or something initialization
sizeof("hi") //result = 3
sizeof(value) // result = 64
Я хочу получить sizeof("hi") == sizeof(value)
Как я не могу сделать?
Комментарии:
1. Это вообще компилируется? Я не знал, что вы можете назначить массив, как вы сделали в строке 5.
2. О, но у вас больше синтаксических ошибок, так что это всего лишь пример. Неважно.
3.
strlen(value) == 2
4. Опубликовать реальный код (который, по крайней мере, компилируется)
5. Вы можете создать
sizeof("hi") == sizeof(value)
, если вы создаете"hi"
иvalue
имеете одинаковый размер.
Ответ №1:
В фрагменте, который вы включили, вы фактически устанавливаете размер value
равным 64. В результате sizeof(value)
будет возвращено 64 * sizeof(char)
. Это правильно, независимо от того, что вы помещаете в массив value
.
Возможно, то, что вы пытаетесь сделать, это автоматически изменить размер массива во время компиляции? например
char value[] = "hi";
int value_size = sizeof(value); // value_size will now equal 3, as the array contains { 'h', 'i', '' }
Ответ №2:
sizeof(value)
, с char value[MAX]
возвращает размер char
, умноженный на MAX
. Следовательно, длина строки, хранящейся в value
, никогда не будет размером value
.