這個符號特別容易混淆, 因為在c++中,&
有兩種不同用法:
獲得變數位址
引用傳遞
第乙個例子,
int main()
0x7ffd05129510
hello
[finished in 0.2s]
例子中, 變數p
使用*
宣告為指標, 將變數s
的位址通過&
符號賦值給p
.
int main()
hello
hello
new hello
new hello
0x7ffc844cc660
0x7ffc844cc660
1[finished in 0.2s]
例子中, 變數r
是變數s
的reference, 在記憶體空間中指代相同的位置.
&
可以用於函式變數引用宣告,
void foo(std::string& str)
int main()
在這個例子中, 變數str
在函式foo
中是變數s
的 reference, 所有對str
的操作, 相當於對s
的操作. C C 中取位址符 的語義
在c語言中,符號大家一定很熟悉吧。它除了可以作為按位運算 與 之外還有更常用的功能 取變數位址。我們首先看下面乙個簡單的例子 include int main void 上面 中,指標p指向變數a的位址。在c c 中,每個變數都有其相應的位址,通過在變數識別符號前加 符號即可獲得變數的位址。那麼我們...
取位址符的用法總結
一種是按位與 1 2 0 一種是取位址 int p a 一種是宣告引用,相當於定義變數別名 int a 3 int b a b是 a的引用,a,b是同乙個變數 b 4 a也變化為 4int c 2 b c 是賦值給b或 a,而不是把b作為 c的引用,引用一旦被宣告,引用物件不可更改 引用的實質是指標...
c語言 取位址運算子的理解
例如 int a 1 假設a的位址是0x7dfe88 int p int 0x7dfe88 int num 1 int p1 以上是一段簡單的給指標p,p1賦值的 0x7dfe88是一段單純的十六進製制位址,但是當位址轉指標的時候卻必須加上強轉 int 如果不加強轉,那麼編譯器就會提出警告 warn...