У меня есть конкретный c вопрос относительно эффективности использования пространства ниже:
Предположим, вы хотите объявить массив из 7 строковых литералов, которые представляют 7 цветов радуги (т.е. красный, оранжевый, желтый, зеленый, синий, инди go и фиолетовый). Предполагая, что размер указателя равен 8 байтам, более эффективно с точки зрения пространства объявлять двумерный массив символов или рваный массив строк?
Строки в C меня смущают и я не уверен, что сразу же займусь этим вопросом. Любая помощь будет принята с благодарностью, особенно если для демонстрации используется даже небольшой объем кода. Спасибо всем заранее!
РЕДАКТИРОВАТЬ: Я написал следующий код:
#include <stdio.h>
#include <string.h>
int main(void) {
char *string_array[] = {"red", "orange", "yellow", "green", "blue", "indigo", "violet"};
char char_array[][7] = {"red", "orange", "yellow", "green", "blue", "indigo", "violet"};
printf("\nThe size of a string is: %lu", sizeof(char *));
printf("\nThe size of a string array with the given data is: %lu", sizeof(string_array));
printf("\nThe size of a char is: %lu", sizeof(char));
printf("\nThe size of a char array with the given data is: %lu", sizeof(char_array));
return 0;
}
, который выводит следующее:
The size of a string is: 4
The size of a string array with the given data is: 28
The size of a char is: 1
The size of a char array with the given data is: 49
Я не уверен, правильно ли я это сделал, так как ожидал, что первый массив (рваный массив строк) будет больше?