練習3.34:假定p1和p2指向同乙個陣列中的元素,則下面程式的功能是什麼?什麼情況下該程式是非法的。
p1 += p2 – p1;
答案:p1 = p1 + (p2 – p1);
網上的參***:功能是跳過p2-p1個元素
當p1是常量時,程式非法
練習3.35:編寫一段程式,利用指標將陣列中的元素置為0.
答案:見雲盤程式
練習3.36: 編寫一段程式,比較兩個陣列是否相等。再寫一段程式,比較vector物件是否相等。
答案:3.35,3.36見雲盤程式
練習3.35
#include
using
namespace
std;
int main()
; for (int i = 0; i != 5; ++i)
cout
<< *(a + i) << " ";
cout
<< endl;
int *p = a;
for (int i = 0; i != 5; ++i)
cout
<< endl;
return
0;}
練習3.36
#include
#include
using
namespace
std;
int main()
; int b[10] = ;
int counter = 0;
int counter2 = 0;
for (int i = 0; i != 10; ++i)
if (counter != 10)
cout
<< "arrays:they are different"
<< endl;
else
cout
<< "arrays:same !!!"
<< endl;
vector
a1 = ;
vector
a2 = ;
auto it1 = a1.begin(); //這裡定義了乙個迭代器,跟下面的迴圈配合
auto it2 = a2.begin();
for (int i = 0; i != 10; ++i)
//其實,簡便的方法是通過下標運算比較,和陣列的結構類似,
//但迭代器好久沒用了,複習下
//cout << counter2 << endl;
if (counter2 != 10)
cout
<< "vectors: they are different"
<< endl;
else
cout
<< "vectors: same !!!"
<< endl;
return
0;}
C Primer第五版 2 4 3節練習
練習2.30 對於下面的這些語句,請說明物件被宣告成了頂層const還是底層const?const int v2 0 v2的值不能被改變,所以這是乙個頂層const int v1 v2 int p1 v1,r1 v1 const int p2 v2 p2存放的是v2的位址,不能間接改變v2的值,但p...
C Primer第五版 2 5 3節練習
練習 2.36 關於下面的 請指出乙個變數的型別以及程式結束時它們各自的值。include int main 練習 2.37 賦值是會產生引用的一類典型表示式,引用的型別就是左值的型別。也就是說,如果i是int,則表示式 i x的型別是int 根據這一特點,請指出下面的 中每乙個變數的型別和值。in...
C Primer第五版 3 2 2節練習
練習3.2 編寫一段程式從標準輸入中一次讀入一整行,然後修改該程式使其一次讀入乙個詞。練習3.3 請說明string類的輸入運算子和getline函式分別是如何處理空白字元的。練習 3.4 編寫一段程式讀入兩個字串,比較其是否相等並輸出結果。如果不相等,輸出較大的那個字串。改寫上述程式,比較輸入的兩...