之前改程式的時候,不僅是單單的頭疼,而是已經到了厭惡和恐懼的地步。
今年改觀了,因為讀《傅盛認知三部曲》給了我一些啟發:對計算機的認知決定了你在計算機領域的成就。所以不再把他看成折磨你的惡魔,而是看成乙個需要了解的朋友,在遇到問題的時候,心裡的抗拒就會少很多。
步入正題,改**收穫:
1、用new建立二維陣列的方法及其配套的delete
char
**a=
newchar
*[n]
//建立二維陣列
for(
int i=
0;i;i++
)for(int i=
0;idelete[
] a;
之前在做資料結構實驗的時候,儲存一組商品或其他事物的名稱真的很讓我頭禿,沒想到今年補休c++就把我的問題給輕鬆解決了!!!
菜鳥的快樂總是如此簡單~
這也是成長的禮物吧。
2、剛剛上手new總會遇到各種各樣的問題,像這乙個:
用new定義了乙個陣列,總是會有陣列越界的提示,查了查發現:
程式有時判斷是否越界訪問,會在陣列的最後乙個元素之後對應的位址處設定資料讀寫斷點。如果該位址對應其它變數干擾判斷,可將陣列多宣告乙個元素,並設定資料讀寫斷點在該多出元素對應的位址上。所以,宣告的時候多乙個,就可以吧這個問題輕鬆解決了!。(這個是乙個輸入商品和對應的**來找出最低價商品和最**商品的**)
#include
#include
//#pragma warning(disable:4996)//使scanf可以使用
using
namespace std;
intqiumax
(float
*p,int n)
}return m;
}int
qiumin
(float
*p,int n)
}return m;
}int
main()
float
*b =
newfloat
[n+1];
for(i =
0; i < n; i++
) d =
qiumax
(b, n)
; x =
qiumin
(b, n)
; cout <<
"highest price:"
;printf
(" %.1f"
,b[d]);
cout <<
", "
;printf
("%s"
, aa[d]);
cout << endl;
/*for (i = 0; aa[i] != '\0'; i++)
*/ cout <<
"lowest price:"
;printf
(" %.1f"
, b[x]);
cout <<
", "
;printf
("%s"
, aa[x]);
//cout << "," << aa[x];
for(i =
0; i < n+
1; i++
)delete
aa;
delete
b;return0;
}
C 二維陣列,以及自定義二維陣列
我們通常情況下是這樣定義乙個二維陣列的 int a 10 15 我們分別檢視一下a,a 0 a 都是一樣的值吧 我們可以這麼理解 a是乙個陣列的陣列 a是陣列首元素的位址,a的首元素是乙個15個元素的陣列,a 0 和a 0 的首元素 a 0 0 的位址是同乙個位址 所以有人可能會想int pa 是不...
如何new乙個二維陣列
定義二維陣列char array x y 1.只定義個一維的就可以了 char array array new char x y 訪問的時候 array i y j 表示array i j 2.定義乙個二維陣列 char array1 array1 new char x for i 0 iarray...
如何new與delete各種二維陣列
一鍵約師傅 define m 10u define n 20u include int main void 刪除的時候是 for int j 0 j delete pnum 第二種,記憶體連續,但是不能,最推薦的一種。不能但是你可以通過 i n j 來計算 啊 這種是1維陣列轉化為2維陣列 int ...