Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Phân biệt &strString #6

Open
CocDap opened this issue Feb 22, 2024 · 2 comments
Open

Phân biệt &strString #6

CocDap opened this issue Feb 22, 2024 · 2 comments

Comments

@CocDap
Copy link
Collaborator

CocDap commented Feb 22, 2024

No description provided.

@zrus
Copy link

zrus commented Feb 24, 2024

  • String là kiểu dữ liệu có giá trị được lưu trên heap vì giá trị có thể thay đổi trong suốt runtime.
  • &str là một con trỏ, tham chiếu đến một str - là một chuỗi byte UTF-8 được lưu trong bộ nhớ chương trình. Hoặc là con trỏ tham chiếu đến String.

@CocDap
Copy link
Collaborator Author

CocDap commented Feb 26, 2024

image

Mình thêm 1 ý diễn giải cho cách giải thích của @zrus hey
Như ở hình trên thì các bạn thấy rằng String sẽ được lưu bởi StackHeap -> Heap lưu nội dung của String, Stack lưu thông tin pointer, len (độ dài của nội dung), capacity ( độ dài của nội dung mà memory allocator có thể cung cấp ban đầu )

+&str dùng con trỏ , tham chiếu tới String đã được định nghĩa (nghĩa là đọc giá trị từ giá trị có sẵn thông qua con trỏ)

let s: String = String::from("hello world");

let hello: &str = &s[0..5];
let world: &str = &s[6..11];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants