sự khác biệt giữa là gì:C++ * vs [] như một tham số chức năng
void foo(item* list)
{
cout << list[xxx].string;
}
và
void this(item list[])
{
cout << list[xxx].string;
}
Giả sử mục được:
struct item
{
char* string;
}
Với trỏ trỏ đến đầu tiên của một mảng ký tự
và list
chỉ là một mảng các mục ...
1 cho "Lưu ý rằng các mảng phân rã để con trỏ khi thông qua như là thông số". Tôi không biết điều đó, thú vị để biết. – Drise
Không chỉ phân tách các biểu thức mảng thành con trỏ, khi bạn chỉ định kiểu mảng làm tham số hàm, nó thực sự được thay đổi thành kiểu con trỏ cho tất cả các mục đích, bao gồm quá tải, 'sizeof' và' decltype'. Bạn thậm chí có thể khai báo nó theo một cách và định nghĩa nó theo một cách khác (nhưng có lẽ bạn không nên). – aschepler
Sẽ tốt hơn khi thêm văn bản từ tiêu chuẩn, để tránh cho mọi người ấn tượng rằng mảng và con trỏ giống nhau nói chung. Tham số chức năng chỉ là trường hợp đặc biệt khi các trạng thái chuẩn "Sau khi xác định loại của mỗi tham số, bất kỳ tham số nào của kiểu" mảng T "[...] được điều chỉnh thành" con trỏ tới T "[...]." [dcl.fct] 8.3.5/5. – bames53