原則:
1、鋸齒數組首先是二維數組,第一維的維數是確定的
2、之所以在C#中能夠出現靈活的鋸齒數組,是因為,C#的數組是引用類型(本質上存放的是指針)
根據這個引用類型(指針)的概念,C++中用指針數組同樣可以實現
C#中:
class A{}
int szA[][] = new int[3][];
szA[0] = new int[2];
szA[1] = new int[6];
szA[2] = new int[3];
當然此時實際的各個數組元素(整形變量)尚未初始化值,C#不允許使用未經初始化的變量
C++中,可以定義int *指針變量的數組,成員是三個int *指針變量,然后每個指針變量在堆內存上分配2,6,3個int變量的內存,
這樣就ok了!
實際上,就是利用了指針的概念,只是C#的語法形式上看起來簡單些,但是也失去了直接操作內存底層值的靈活性,托管,非托管,.net平臺有利有弊的。
新聞熱點
疑難解答