Em có thử đoạn code như thế này:
// Khai báo hàm
void contro(unsigned int8 *p);
// Khai báo mảng hằng
CONST unsigned int8 a[5] = {2, 3, 4, 7, 9};
CONST unsigned int8 b[5] = {1, 2, 4,8, 6};
void main (void)
{ contro(a);
while(1) {}
}
void contro(unsigned int8 *p)
{ data = p[3] + 1; }
Sau đó xuất dữ liệu của biến data lên LED 7 đoạn. Tại sao với đoạn code như vậy khi build thì lại báo lỗi là "Attempt to create a pointer to a constant" và hiển thị không đúng kết quả. Trong khi bỏ CONST thì kết quả lại đúng là 8. Có phải không thể sử dụng con trỏ với const ? Vậy có cách nào để tạo 1 hàm như contro chẳng hạn mà khi gọi hàm và đưa vào hàm contro giá trị mảng a, hoặc mảng b đều thực hiện những phép tính trong thân hàm ?? Mong mọi người chỉ dùm em nhé.
// Khai báo hàm
void contro(unsigned int8 *p);
// Khai báo mảng hằng
CONST unsigned int8 a[5] = {2, 3, 4, 7, 9};
CONST unsigned int8 b[5] = {1, 2, 4,8, 6};
void main (void)
{ contro(a);
while(1) {}
}
void contro(unsigned int8 *p)
{ data = p[3] + 1; }
Sau đó xuất dữ liệu của biến data lên LED 7 đoạn. Tại sao với đoạn code như vậy khi build thì lại báo lỗi là "Attempt to create a pointer to a constant" và hiển thị không đúng kết quả. Trong khi bỏ CONST thì kết quả lại đúng là 8. Có phải không thể sử dụng con trỏ với const ? Vậy có cách nào để tạo 1 hàm như contro chẳng hạn mà khi gọi hàm và đưa vào hàm contro giá trị mảng a, hoặc mảng b đều thực hiện những phép tính trong thân hàm ?? Mong mọi người chỉ dùm em nhé.
Comment