對于數(shù)組int arr[]={1,2,3,4};可以用len=sizeof(arr)/sizeof(int);得到其大小len。
凌云網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
要在一個函數(shù)中得到一個數(shù)組的長度,你應(yīng)該這個數(shù)組作為一個引用傳出去,那樣,就能用sizeof(Array)/sizeof(Array[0])的方法獲得長度了。
指針數(shù)組,就是一個數(shù)組里面存放的是指針而已。一個指針固定占據(jù)四個字節(jié)的空間int *a[4];double *a[4];所占內(nèi)存大小都是4*4=16字節(jié)。
因為你沒有給出二維數(shù)組的第二個維度。即可以寫成 int arr[][5],或者int arr[3][5]。
計算機會分配一塊《連續(xù)》的內(nèi)存給數(shù)組來使用,這樣就可以通過《下標》很方便的訪問數(shù)組的元素。
c++這種定義是不允許的。數(shù)組的空間是在運行前分配的,而程序運行前Num大小未知,所以是不可以的。另外,數(shù)組太大也會溢出。你可以使用指針數(shù)組然后用new來動態(tài)分配。
聲明一個二級指針**p,當(dāng)你知道了“大小”的時候,先給p動態(tài)分配存放指針的內(nèi)存空間,然后再給*p分配存放元素的內(nèi)存空間。釋放時先將各個*p釋放,再釋放p。
1、第一種是在數(shù)組初始化的時候長度申請的足夠大,這樣做會造成內(nèi)存空間的浪費,一般不推薦使用。
2、ArrayList底層是變長數(shù)組維護的,不需要定義其大小,如果長度不夠了就會自動擴展為原來長度的一倍;數(shù)組的大小在定義的時候已經(jīng)是個固定的值,不會自動擴展,數(shù)組的效率比集合的效率高,各有側(cè)重點。
3、ENUM。數(shù)組(可以存儲基本數(shù)據(jù)類型)是用來存現(xiàn)對象的一種容器,但是數(shù)組的長度固定,不適合在對象數(shù)量未知的情況下使用。集合(只能存儲對象,對象類型可以不一樣)的長度可變,可在多數(shù)情況下使用。
4、用指針或者結(jié)構(gòu)體都可以。用指針的話需分配空間。如果寫程序時就知道大小的話用數(shù)組還是比較合適的,如果是運行時決定大小那就得用指針和動態(tài)分配空間了。
5、綜上所述,如果需要變量控制長度的一個數(shù)組,類似“int a[n];”的,可改成“int* const a = (int*)malloc(sizeof(int)*n);”并直接作為數(shù)組以[]方式使用。
6、如果你一定要用數(shù)組來動態(tài)存儲字符串,這在C或者C++貌似是不可能的。通常,在C++中實現(xiàn)動態(tài)字符串存儲,有兩種方法:一是使用鏈表;二是直接使用STL中的string類。string類的使用比較多,自己寫鏈表則比較麻煩。