2009-05-19 33 views
14

Tôi đang gỡ lỗi ứng dụng mạng.mảng byte hardcode trong C

Tôi phải mô phỏng một số dữ liệu được trao đổi để ứng dụng hoạt động. Trong C++, bạn có thể làm điều gì đó như

char* myArray = { 0x00, 0x11, 0x22 }; 

Tuy nhiên, tôi dường như không thể tìm thấy một C tương đương với cú pháp này.

Về cơ bản, tôi chỉ muốn lấp đầy một mảng với các giá trị được mã hóa cứng.

Trả lời

30

Bạn có thể làm điều tương tự trong C, nhưng bạn nên khai báo nó loại char[], không char*, do đó bạn có thể nhận được kích thước của nó với sizeof điều hành:

char myArray[] = { 0x00, 0x11, 0x22 }; 
size_t myArraySize = sizeof(myArray); // myArraySize = 3 
+8

Lưu ý rằng bạn cũng nên sử dụng cú pháp "char foo []" trong C++ –

2

Liệu không

char myArray[] = {0x00, 0x01,0x02}; 

hoạt động?

5

Hãy thử với:

char myArray[] = { 0x00, 0x11, 0x22 }; 
4

Chỉ vì lợi ích của sự hoàn chỉnh, với C99 bạn cũng có thể sử dụng các chữ ghép:


    char *myArray = (char []) {0x00, 0x11, 0x22 }; 

Nếu mã nguồn tương thích với C++ là một yêu cầu, bạn tốt hơn không sử dụng cấu trúc này, bởi vì nó là - afaik - không phải là một phần của tiêu chuẩn C++.

Các vấn đề liên quan