Xin chào Tôi là người mới đến trang web này và tôi cần một số trợ giúp để hiểu được những gì sẽ được coi là "chuẩn" trong khi mã hóa cấu trúc trong C yêu cầu một chuỗi. Về cơ bản tôi tự hỏi đó trong những cách sau đây sẽ được coi là "tiêu chuẩn công nghiệp" trong khi sử dụng các cấu trúc trong C để theo dõi tất cả các bộ nhớ cấu trúc đòi hỏi:Tôi nên khai báo các chuỗi trong cấu trúc C như thế nào?
1) Fixed Size String:
typedef struct
{
int damage;
char name[40];
} Item;
bây giờ tôi có thể nhận được kích thước sử dụng sizeof(Item)
2) Character mảng Pointer
typedef struct
{
int damage;
char *name;
} Item;
tôi biết tôi có thể lưu trữ kích thước của name
sử dụng biến số thứ hai, nhưng có cách nào khác không?
i) là có bất kỳ lợi thế khác để sử dụng kích thước cố định (1)
char name[40];
so với cách làm như sau và sử dụng một con trỏ đến một (2) mảng char?
char *name;
và nếu có, lợi thế là gì?
ii) Ngoài ra, là chuỗi sử dụng một con trỏ tới mảng char (2) sẽ được lưu trữ tuần tự và ngay sau cấu trúc (ngay sau con trỏ tới chuỗi) hoặc nó sẽ được lưu ở đâu đó trong bộ nhớ?
iii) Tôi muốn biết làm thế nào người ta có thể tìm ra chiều dài của một biến char *
chuỗi (mà không sử dụng một size_t
, hoặc giá trị số nguyên để lưu trữ các chiều dài)
Tại sao thẻ C++ này được gắn thẻ? – Rapptz
@Rapptz: Tôi giả sử vì mã C++ thường tiêu thụ và hiển thị các API tương thích C, vì chúng tương thích hơn với các ngôn ngữ khác –
Đối với C++, nó là thành ngữ để sử dụng 'std :: string' -' struct Foo {std :: string f; }; '. –