: 역 참조포인터를 인쇄하면 역 참조 된 포인터를 인쇄 할 때와 같은 결과가 인쇄되는 이유는 무엇입니까? 녹 가이드에서
y
, 우리가 별표를 사용 (값을 얻을 오히려 기준 자체보다 언급되는) (*
)
그래서 내가 그것을했다 :
fn main() {
let x = 1;
let ptr_y = &x;
println!("x: {}, ptr_y: {}", x, *ptr_y);
}
이 날 동일한 결과를 제공한다 (X = 1, Y = 1)에도 명시 역 참조없이 :
,fn main() {
let x = 1;
let ptr_y = &x;
println!("x: {}, ptr_y: {}", x, ptr_y);
}
왜? ptr_y
메모리 주소를 인쇄하고 *ptr_y
인쇄를하지 않아야하나요? 어떤 종류의 자동 참조 취소가 있습니까?
귀하의 게시물 후 조금 포인터와 그들은 단지 "{: p}, ptr_y"왜냐하면 "println!은 자동으로 우리를 역 참조 할 것입니다". 간단한 질문 : 나는 보통 "유형 이름 = 값"또는 "int 테스트 = 1"과 같은 것을 사용합니다. 그것은 녹이 옵션으로, "int int test = 1"컴파일러 오류를 제공 할 수없는 것? 나는 컴파일러가 자동으로 타입을 얻는다는 것을 알고 있지만 구문을 위해서 선언 할 때 내 코드에 쓰고 싶다. ( 어쨌든, 매크로가 정확히 무엇을하는지 아무런 단서가 없는데도 대답 해줘서 고마워.). – Vega
오, 그래,'{: p}'도 작동하며'p '[형식 지정자] (http://doc.rust-lang.org/nightly/std/fmt/#formatting-traits)는 [ 다양한 종류의 포인터] (http://doc.rust-lang.org/nightly/std/fmt/trait.Pointer.html)를 사용하여 주소를 인쇄하십시오. – huon
[유형은'let x : Type = 1;'] (http://doc.rust-lang.org/nightly/guide.html#variable-bindings)로 지정됩니다. – huon