回答編集履歴
3
サンプルプログラムのbの型をu8からu32に変更しました
answer
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
let a = [34, 1, 0, 0]; // [u8; 4]型
|
|
10
10
|
let a_ref = &a; // &[u8; 4]型
|
|
11
11
|
|
|
12
|
-
let b =
|
|
12
|
+
let b = 12u32; // u32型
|
|
13
|
-
let b_ref = &b; // &
|
|
13
|
+
let b_ref = &b; // &u32型
|
|
14
14
|
|
|
15
15
|
println!("var size address value");
|
|
16
16
|
println!("--------------- ---- -------------- ---------------");
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
ref2usize(a_ref)
|
|
29
29
|
);
|
|
30
30
|
println!(
|
|
31
|
-
"b:
|
|
31
|
+
"b: u32 {} {:p} {:?}",
|
|
32
|
-
size_of::<
|
|
32
|
+
size_of::<u32>(),
|
|
33
33
|
&b,
|
|
34
34
|
b
|
|
35
35
|
);
|
|
36
36
|
println!(
|
|
37
|
-
"b_ref: &
|
|
37
|
+
"b_ref: &u32 {} {:p} 0x{:x}",
|
|
38
|
-
size_of::<&
|
|
38
|
+
size_of::<&u32>(),
|
|
39
39
|
&b_ref,
|
|
40
40
|
ref2usize(b_ref)
|
|
41
41
|
);
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
```console
|
|
58
58
|
var size address value
|
|
59
59
|
--------------- ---- -------------- ---------------
|
|
60
|
-
a: [u8; 4] 4
|
|
60
|
+
a: [u8; 4] 4 0x7ffeedd64b88 [34, 1, 0, 0]
|
|
61
|
-
a_ref: &[u8; 4] 8
|
|
61
|
+
a_ref: &[u8; 4] 8 0x7ffeedd64b98 0x7ffeedd64b88
|
|
62
|
-
b:
|
|
62
|
+
b: u32 4 0x7ffeedd64ba4 12
|
|
63
|
-
b_ref: &
|
|
63
|
+
b_ref: &u32 8 0x7ffeedd64ba8 0x7ffeedd64ba4
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
参照`a_ref`はそのサイズは8バイト(64ビット)で、値として`a`が置かれているアドレスを持っていることが確認できます。
|
2
誤字を修正しました
answer
CHANGED
|
@@ -63,4 +63,4 @@
|
|
|
63
63
|
b_ref: &u8 8 0x7ffeed9e2ba8 0x7ffeed9e2ba7
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
参照`a_ref`はそのサイズは8バイト(64ビット)で、値として
|
|
66
|
+
参照`a_ref`はそのサイズは8バイト(64ビット)で、値として`a`が置かれているアドレスを持っていることが確認できます。
|
1
説明を少し追加しました
answer
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
参照(`&`)はポインタの一種で、その値は、それが指しているデータのメモリ上のアドレス
|
|
1
|
+
参照(`&`)はポインタの一種で、その値は、それが指しているデータのメモリ上のアドレスです。アドレスは64ビットOSでは8バイトですので、参照の値のサイズも8バイトになります。
|
|
2
2
|
|
|
3
3
|
簡単なプログラムを作ってみました。
|
|
4
4
|
|