01/10/2018, 14:24
Con trỏ và std::string
Em có một số thắc mắc về con trỏ ạ.
Em thử viết một đoạn code về con trỏ.
int main()
{
string texts[]={"one","two","three"};
string *texts_ptr=texts;
string *element_ptr=&texts[0];
string *end_ptr=&texts[2];
return 0;
}
Em không hiểu tại sao em đặt *texts_ptr=texts được, nhưng tại sao khi đặt *element_ptr bằng 1 phần tử:
*element_ptr=&texts[0], em phải dùng dầu & để chỉ địa chỉ ạ?
Em nghĩ khi đặt string *end_ptr=texts[0], ta đã mặc định end_ptr trỏ đến địa chỉ của phần tử đầu tiên của texts.
Em cảm ơn nhiều lắm.
Bài liên quan
texts[0]
là string, không phải địa chỉ nên không gán được.Cho em hỏi thêm như vậy em đặt một biến *x thì *x hay x là địa chỉ ạ?
x là địa chỉ nhé bạn.
Theo em hiểu thì *x không phải là địa chỉ, tại sao em phải gán nó cho “&” texts[0] ạ?
*x
không là địa chỉ, nhưngstd::string *x
thì là địa chỉ.Còn dòng string *texts_ptr=texts; thì sao ạ, có phải lúc này texts đã chỉ sẵn tới địa chỉ của texts[0], nên không cần thêm “&” phải không ạ?
Đúng vậy, texts chính là địa chỉ của texts[0].
Thực ra với mảng bt thì &texts[i] = texts + i mà thôi.
Em chân thành cảm ơn mọi người