[問題]指標的新手問題

看板C_and_CPP (C/C++)作者 (YOY)時間12年前 (2014/03/12 15:36), 編輯推噓3(305)
留言8則, 6人參與, 最新討論串1/1
最近在學C++的指標真的很頭痛 遇到一個新手問題 #include<iostream> #include<cstdlib> using namespace std; void address(int *); int main(void) { int a=12; int *ptr=&a; address(&a); address(ptr); return 0; } void address(int *p1) { cout<<"位置於"<<p1<<"內,儲存變數為"<<*p1<<endl; } 跟 #include<iostream> #include<cstdlib> using namespace std; int main(void) { int a[3]={5,7,9}; int i,sum=0; int *ptr=a; for(i=0;i<3;i++) sum+=*(ptr++); cout<<"sum="<<sum<<endl; return 0; } "&"<==這個符號的意思應該是位置吧? 那為什麼整數ptr可以一下指向位置,一下指向整數??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.28.72

03/12 15:37, , 1F
你怎麼覺得它一下子會指向位置一下子會指向整數?
03/12 15:37, 1F

03/12 15:38, , 2F
你認為哪支程式的哪一段有如此的表現?
03/12 15:38, 2F

03/12 15:46, , 3F
int *ptr=a; 跟int *ptr=&a; 差在哪 為什麼互換會錯?
03/12 15:46, 3F

03/12 16:54, , 4F
一個是 a 一個是 &a 啊, 你家房子和你家地址差在哪?
03/12 16:54, 4F

03/12 17:32, , 5F
a是陣列 int *ptr=a 或 int *ptr=&a[0]
03/12 17:32, 5F

03/12 17:34, , 6F
a是整數 int *ptr=&a
03/12 17:34, 6F

03/12 23:49, , 7F
&a是a的記憶體位置=ptr *ptr=a
03/12 23:49, 7F

03/15 02:20, , 8F
int *ptr = a; a 會隱性轉型成 pointer to int,傳回 ptr。
03/15 02:20, 8F
文章代碼(AID): #1J80v_5H (C_and_CPP)
文章代碼(AID): #1J80v_5H (C_and_CPP)