Làm cách nào để viết mã của tôi để ví dụ một chỉ mục mảng cụ thể của một mảng có thể là thành viên của cấu trúc? Các mã sau đây là cho tôi vấn đề.Trong C: Làm thế nào để thiết lập một con trỏ đến một cấu trúc thành viên đó là một mảng?
// main.c
void clean_buffers(void); // prototype
struct DEV_STATUS {
unsigned char ADDR;
unsigned char DEV_HAS_DATA;
unsigned char ETH_HAS_DATA;
unsigned char DATA[20];
};
struct DEV_STATUS g_cmdQueue[60] = {0};
void main(void) {
clean_buffers();
while (1) {
;// MCU tasks
}
}
void clean_buffers(void) {
unsigned char theCount = 0;
byte queIdx;
for (queIdx = 0; queIdx < 59; queIdx++) {
struct DEV_STATUS *p_struct;
unsigned char *p_data;
p_struct = &g_cmdQueue[queIdx];
p_data = &p_struct->DATA;
p_struct->ADDR = 0;
p_struct->DEV_HAS_DATA = 0;
p_struct->ETH_HAS_DATA = 0;
theCount = 0;
while(*(p_data+theCount) != 0) {
*(p_data+(theCount++)) = 0;
}
}
} // EOF main.c
tôi nhận được một lỗi biên dịch "thành viên struct/đoàn dự kiến" vào dòng sau:
p_data = &p_struct->DATA;
Làm thế nào tôi nên viết một con trỏ nếu tôi là để truy cập, ví dụ, cụ thể giá trị của cấu trúc thành viên DATA [3]? Tôi bối rối, tôi nghĩ rằng như p_data = & p_struct-> DATA; được xác định, tôi sẽ có thể nhận được nó bằng cách sử dụng * (pdata + 3) nhưng tôi đoán tôi đang thiếu một cái gì đó.
Cảm ơn tất cả các câu trả lời, tôi đánh giá cao nó. – Nate
Thông báo lỗi không có ý nghĩa. Bạn đang sử dụng trình biên dịch nào? – AnT