Witam Jestem nowy na tej stronie i potrzebuję pomocy w zrozumieniu, co byłoby uważane za "normę" podczas kodowania struktur w C, które wymagają ciągów znaków. W zasadzie zastanawiam się, które z poniższych sposobów byłoby uznane za „standard przemysłowy” podczas korzystania struktur w C, aby śledzić wszystkie wymagania dotyczące pamięci struktura wymaga:Jak powinienem zadeklarować ciągi w strukturach C?
1) stały rozmiar wyrażenie:
typedef struct
{
int damage;
char name[40];
} Item;
mogę teraz dostać rozmiar korzystając sizeof(Item)
2) tablicy znaków Pointer
typedef struct
{
int damage;
char *name;
} Item;
wiem, że mogę przechowywać rozmiar name
przy użyciu drugiej zmiennej, ale czy istnieje inny sposób?
i) istnieje inna zaleta pomocą stałego rozmiaru (1)
char name[40];
porównaniu następujący sposób i stosując wskaźnik do tablicy Char (2)?
char *name;
A jeśli tak, jaka jest korzyść?
ii) Czy ciąg znaków za pomocą wskaźnika do tablicy znaków (2) zostanie zapisany sekwencyjnie i natychmiast po strukturze (bezpośrednio za wskaźnikiem do łańcucha) lub czy będzie przechowywany w innym miejscu w pamięci?
iii) Chciałabym wiedzieć, w jaki sposób można znaleźć długość zmiennej char *
smyczkową (bez użycia size_t
lub wartość całkowitą do przechowywania długości)
Dlaczego to oznaczono jako C++? – Rapptz
@Rapptz: Przypuszczam, że ponieważ kod C++ często zużywa i eksponuje API kompatybilne z C, ponieważ są one znacznie bardziej kompatybilne z innymi językami –
Dla C++ jest to idiomatyczne użycie 'std :: string' -' struct Foo {std :: string fa; }; '. –