[問題] 關於指標與陣列

看板C_and_CPP作者 (sinny)時間14年前 (2009/11/01 01:22), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
最近在自習c++,練習到指標與陣列的部分,練習書本範例時遇到以下問題 const int MAX=80; char buffer [MAX]; char* pbuffer = buffer; cout << endl << "Enter a string of less than " << MAX << " charasters:" << endl; cin.getline(buffer, MAX , '\n'); while(*pbuffer) pbuffer++; cout << endl <<"The string \"" << buffer <<"\" has " << pbuffer - buffer <<" characters."; cout << endl; 這是一個計算輸入文字並計算有多少字元的練習 問題1. while(*pbuffer) pbuffer++; 請問這部分是pbuffer指標位置每次加1, 直到發現*pbuffer所代表的內容發現是\0時停止嗎? 問題2. <<"\" has " << pbuffer - buffer <<" characters."; 這行的部分我真的搞不懂,pbuffer是buffer指標, 到最後不是指到了buffer的最後一個字元的位置 那pbuffer代表的是"位置"但為什麼可以減代表陣列的buffer? 對不起,這部分我真的很混亂~"~ 感謝大家的幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.161.19

11/01 01:26, , 1F
1.對 因為 '\0' 就是 0 你可以去看看 ascii
11/01 01:26, 1F

11/01 01:32, , 2F
2.因為buffer也是該陣列第一個element的"位置"
11/01 01:32, 2F

11/01 01:34, , 3F
你可以去印印看 (void*)buffer 和 &buffer
11/01 01:34, 3F

11/01 01:34, , 4F
你就會了解了
11/01 01:34, 4F

11/01 08:29, , 5F
所以沒加矩陣指定位置就代表陣列同為指標指的第一位置
11/01 08:29, 5F

11/01 08:29, , 6F
嗎? 謝謝提示0RZ
11/01 08:29, 6F
文章代碼(AID): #1Ax79LSD (C_and_CPP)