thể trùng lặp:
Why can’t I convert ‘char**’ to a ‘const char* const*’ in C?Tại sao không thể chuyển `char **` thành hàm `const char **` trong C?
Tôi tò mò, tại sao tôi không thể vượt qua một char **
để const char **
chức năng? Khi có thể vượt qua char *
đến một chức năng const char *
, có vẻ như không thể làm điều đó với con trỏ kép. Tôi nghĩ rằng nó luôn luôn là ok để thêm constness (nhưng không ok để thả constness) nhưng bây giờ có vẻ như tôi đã sai.
Gcc trình biên dịch được đưa ra cho tôi những errror:
note: expected ‘const char **’ but argument is of type ‘char **’
Dưới đây là đoạn mã:
int f(const char **a) { }
int main() {
char *a;
f(&a);
}
Bất kỳ ý tưởng?
Điều này có vẻ tương tự như http://stackoverflow.com/questions/78125/why-cant-i-convert-char-to-a-const-char-const-in-c –
BTW, to mọi người bỏ phiếu để đóng: đây không phải là bản sao chính xác của http://stackoverflow.com/questions/78125/why-cant-i-convert-char-to-a-const-char-const-in-c kể từ đó một là đặc biệt về 'const char * const *'. (Tuy nhiên, một số câu trả lời có liên quan.) – jamesdlin