Я обычно работаю с массивом строк таким образом, потому что это позволяет мне не указывать ограничение на число символов:
char *names[2] = {"John","Doe"};
printf("%s\n",*((names)));
printf("%s\n",*((names)+1));
Я не могу воспроизвести это при использовании структуры.
Я пробовал и с john.names = {"John","Doe"};
, и с john.*names = {"John","Doe"}
. Но я получаю ожидаемую ошибку выражения.
Однако я могу сделать это во время инициализации с помощью Person john = {{"John","Doe"}};
. Так что я не уверен, разрешено ли так действовать только во время инициализации.
main.h
typedef struct Person Person;
struct Person
{
char *names[2];
};
main.c
#include <stdio.h>
#include <stdlib.h>
#include "main.h"
int main()
{
Person john = {{"John","Doe"}};
john.names = {"John","Doe"}; // Expected expression error
printf("%s\n",john.names[0]);
printf("%s\n",john.names[1]);
return 0;
}
Каким было бы "ожидаемое выражение", мне разрешено это делать?