int *tmp,星星跟int一起看
代表你宣告了一個變數叫做tmp,它的型態是int *
所以當我們寫 int *p = &temp; 的時候
它的意思相當於這兩行
int *p;
p = &temp; // 注意這個時候沒有 *
*tmp 前面沒有寫型態的時候,它才是書上寫的
「變數前面加*代表指的是記憶體位址的"值"」
英文叫做 dereference
給你一個簡單的範例,你可以觀察它們的輸出
哪些東西一樣,哪些東西不一樣,哪些東西會變,哪些不會變
如果每一個輸出都了解,那應該就沒啥問題了
#include <iostream>
using namespace std;
int main()
{
int x = 3;
int y = 5;
int *p = NULL;
cout << "&x : " << hex << &x << endl;
cout << "&y : " << hex << &y << endl;
cout << "----------" << endl;
cout << "&p : " << hex << &p << endl;
cout << " p : " << hex << p << endl;
// cout << "*p : " << hex << *p << endl; 可以拿掉註解試試,詳見置底十三戒第3
cout << "---------" << endl;
p = &x;
cout << "&p : " << hex << &p << endl;
cout << " p : " << hex << p << endl;
cout << "*p : " << hex << *p << endl;
cout << "---------" << endl;
*p = y;
cout << "&p : " << hex << &p << endl;
cout << " p : " << hex << p << endl;
cout << "*p : " << hex << *p << endl;
cout << "---------" << endl;
p = &y;
cout << "&p : " << hex << &p << endl;
cout << " p : " << hex << p << endl;
cout << "*p : " << hex << *p << endl;
cout << "---------" << endl;
*p = x;
cout << "&p : " << hex << &p << endl;
cout << " p : " << hex << p << endl;
cout << "*p : " << hex << *p << endl;
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 101.13.50.119
指標要先有個觀念
int *tmp = ....;
*tmp = ....;
雖然它們都有個 *tmp,但意思卻是完全不同的
int *tmp 要看成