Một chuỗi chuỗi thường xuyên theo nghĩa đen có nghĩa sau đây:Tại sao trả về một tham chiếu đến một chuỗi ký tự một tham chiếu đến một tạm thời?
xâu thường và UTF-8 chuỗi literals cũng được gọi để xâu như hẹp. Một chuỗi ký tự hẹp có loại “mảng của n const char”, trong đó n là kích thước của chuỗi như được định nghĩa bên dưới, và có thời lượng lưu trữ tĩnh (3.7).
Tôi giả sử vì nó có thời lượng lưu trữ tĩnh và chúng thường được đặt trong ROM, nó thực sự không phải là một vấn đề lớn nếu có một tham chiếu lơ lửng với nó. Các mã sau đây phát ra một cảnh báo
const char* const & foo()
{
return "Hello";
}
// warning: returning reference to temporary [-Wreturn-local-addr]
Nhưng điều này là tốt, thậm chí không có từ khóa tĩnh
const char* const & foo()
{
const char* const & s = "Hello";
return s;
}
Vì vậy, sự khác biệt giữa hai là gì?
Mã của bạn không trả về tham chiếu đến chuỗi ký tự. Nó trả về một tham chiếu đến một con trỏ. Hầu hết những gì bạn trích dẫn là không liên quan đến mã. –
Trích dẫn của bạn từ đâu? Bạn nên thêm nó. – dhein
Tại sao bạn trả về một tham chiếu đến một con trỏ char thay vì chính con trỏ char? – CodesInChaos