I saw this image while reading "the book" (https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#references-and-borrowing):

I have two questions:
Does reference
spoint tos1itself (address of structs1) or the memberptrofs1?Is
s(the reference) itself a Struct that contains a public memberptror a pointer (string* s) like in C++?
For easier understanding:
fn main() {
// String
let s1 = String::from("hello");
// reference
let s = &s1;
println!("s:{:p}, s1:{:p}", s, &s1);
// OUTPUT: s:0x63373afae0, s1:0x63373afae0
}
let s = &s1wherelet s1 = "hello".to_string()?sands1are defined in their example.