原來書中**中for迴圈裡:
int *tp = p;
for(vector::iterator iter = ivec.begin(); iter !=ivec.end() ;++iter ,++tp)
*tp = *iter;
這段**裡新建指標tp,問題出在下面的for迴圈,最後tp已經來到指標(陣列)最後乙個元素的後一位,是無效的,作者所以才新建了這個tp指標(迴圈執行完之後,這個tp指標就相當於廢掉了吧),而原來的p指標才沒有問題,作者很巧妙的避免了指向陣列外的位址這個問題,
作為初學者,真的在這裡想了半天,也體會到了,指標真的是很危險,在c++中能不用盡量不要用,下面的**我是用陣列下標實現的,
編寫程式由標準輸入裝置讀入的元素資料建立乙個int型的vector物件,然後動態建立乙個與該vector物件大小一致的陣列
//把vector物件的元素複製給新陣列
#include
#include
//using std::cout;
//using std::cin;
//using std::endl;
//using std::vector;
using namespace std;
int main()
int *p =
newint
[ivec.
size()
];
size_t ix =0;
for(vector
::iterator iter = ivec.
begin()
;iter != ivec.
end();
++iter,
++ix)
for(size_t i =
0; i != ivec.
size()
;++i)
//輸出 檢驗
delete
p;return0;
}
4 18 c primer 第四版 練習
編寫程式 使用指標把乙個int型陣列的所有元素設定為0 include using std begin using std end using std cout using std endl int main for int pbeg begin arr pbeg end arr pbeg for ...
c primer大綱(第四版)
第1章 快速入門 第一部分 基本語言 第2章 變數和基本型別 第3章 標準庫型別 第4章 陣列和指標 第5章 表示式 第6章 語句 第7章 函式 第8章 標準io庫 第二部分 容器和演算法 第9章 順序容器 第10章 關聯容器 第11章 泛型演算法 第三部分 類和資料抽象 第12章 類 第13章 複...
c primer 第四版 學習札記 9 24
1 ex4 22 const char cp hello int cnt while cp while cp 解釋兩個迴圈的不同 我的理解是第乙個迴圈是判斷cp指標是否為空作為迴圈條件的,而 cp的操作並不會讓cp為空,所以迴圈會持續進行,直到出錯 也許會是個大錯誤,因為都不知道會訪問到記憶體的何處...