Đây là sự tiếp nối của một số question khác.initialisation string string
Xét đoạn mã sau:
char *hi = "hello";
char *array1[3] =
{
hi,
"world",
"there."
};
Nó không biên dịch để tôi ngạc nhiên (rõ ràng là tôi không biết cú pháp C cũng như tôi nghĩ) và tạo ra các lỗi sau:
error: initializer element is not constant
Nếu tôi thay đổi char * vào char [] nó biên dịch tốt:
char hi[] = "hello";
char *array1[3] =
{
hi,
"world",
"there."
};
ai đó có thể giải thích cho tôi tại sao?
cảm ơn. có cách nào để sử dụng từ khóa const để làm cho đoạn mã đầu tiên hoạt động không? – lang2
@ lang2 Không nằm trong phạm vi đó. Xem [C FAQ] này (http://c-faq.com/ansi/constasconst.html). Không, ngay cả với 'char * const hi' (hằng số trỏ tới char). – cnicutar
Chỉ cần thêm một cái gì đó, tho 'Tôi không chắc chắn nếu nó sẽ làm việc ... phiên bản đầu tiên của bạn biên dịch OK trong C + + - Tôi sẽ thử với một trình biên dịch C khi tôi nhận được một thời điểm :) – icabod