程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ VS C#(5):數組

C++ VS C#(5):數組

編輯:C++入門知識

//=====================================================================
//TITLE:
//    C++ VS C#(5):數組
//AUTHOR:
//    norains
//DATE:
//    Monday  13-December-2010
//Environment:
//    Visual Studio 2010
//    Visual Studio 2005
//=====================================================================

1. 數組


    C++和C#都是用“[]”來表示數組,只不過不同的是,一個是在後,一個是在前,如://C++
int Age[] = {5};

 

//C#
int []Age = {5};


    如果要指定數組的大小,C++可以在“[]”中直接填入數字,而C#必須重新new一次,如://C++
int Age[10];

//C#
//int [10]Age}; 無法編譯通過
int[] Age = new int [10];//可以編譯通過


    另外,這兩者語言都可以指定數組的大小,但這裡有個區別,C#中數組大小必須要和元素個數相匹配,如://C++
int Age[10] = {5,10};

//C#,無法編譯通過
int[] Age = new int[10] { 5, 10 };


    C++能通過,是因為它可以自動給沒有賦值的元素自動給予0的數值,而C#則必須要一一指定,所以代碼只能這樣://C#,數組大小和元素個數相等,能夠編譯通過
int[] Age = new int[2] { 5, 10 };

    在C++的時候,是不是經常碰到數組越界的情況?但在C#中,如果你只是想讀取數值,那麼使用foreach完全就可以不用擔心這個問題,如:int[] Age = new int[5] { 5, 10,1,2,3 };
foreach (int Val in Age)
{
   Console.WriteLine("{0}",Val);
}

    這裡只需要注意一點,聲明的Val是只讀,如果強行賦值會出錯,如:int[] Age = new int[5] { 5, 10,1,2,3 };
foreach (int Val in Age)
{
   Val = 5;//會出錯
}

    如果要對數組進行賦值,就不能使用foreach,而只能是for了。

    這兩種語言,都支持多維數組,當然聲明就是大相徑庭了,以二維數組為例://C++
byte Array[2][3] = {{00,01,02},
     {10,11,12}};

//C#
byte[,] Array = {{00,01,02},
    {10,11,12}};


    C#的數組還有一個很有意思的特性,就是數組的數組,也就是很多教科書上所說的變長數組。多維數組和變長數組的區別在於,前者以“,”分隔,而後者是以多個“[]”分隔,如:byte[][] Array = { new byte[10],
               new byte[20],
               new byte[30]};
byte Value = Array[1][10];

    但在C++很多教科書裡,卻很少提到數組的數組這個詞語,是不是C++不支持呢?答案當然不是,因為數組的數組在C++裡其實也就是數組的概念,對於上面的C#代碼,C++中可以變更表示如下: byte* Array[] = {new byte [10],
    new byte [20],
    new byte [30]};
byte Value = Array[1][10];

    為什麼C++裡面沒有特意的聲明變長數組的語法,但卻能實現C#的相應的功能呢?其實很簡單,並不是C++不能,而是C#不行。這個就要從指針說起,因為C#為了更安全,所以取消了指針這個遭人诟病的隱患,而C++的這個實現,其本質是存儲指針的數組,正因為如此,取消了指針的C#就不能使用聲明多維數組的方式來實現變長數組,所以才會獨立出一個聲明變長數組的語法。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved