1樓:巢琨瑜
float (*a)[5]是定義了一個指向陣列的指標,如果要把它當成二維陣列的話,相當於列數為5,行數可以動態分配。如:
float (*a)[5];
int n = 2; //定義行數為2
a = new float[n][5];
int sum = 0;
for (int i=0; i 2樓:匿名使用者 對於你定義的這個陣列,它表示有5個float*型別的指標,也就是說它定義了一個二維陣列,這個陣列有5行,這5行的首地址分別為a[0],a[1],a[2],a[3],a[4],但是沒有給每一行具體分配空間,所以還不能說它有多少列,你要為每一行分配空間之後再賦值,然後才能計算行和 3樓:阪哥 float f=0; for(int n=0;n<5;n++) 4樓:活在當下 float (*a)[5]; 是說a為指向含5個元素的一位陣列的指標變數。 求和:#include main() ;int i,sn = 0; for(i = 0;i < 4;i++) printf("%d\n",sn);} c語言關於定義二維陣列的問題 5樓:焮欣 首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始地址,第二維就是某組資料中的某個值.其次,你要知道a[4]所表達的意思,是指二維陣列a的每一維都是由4個元素組成的一維陣列.而編譯器可以根據你賦給a的初值個數計算它的第一維長度(元素總個數/4,如果不能整除,則長度加1,此時還應該有幾個沒有賦初值的陣列元素). 而a[3]的意思從表面上看可以成立,但問題是編譯器不能直接識別其第二維的確切長度(你可以考慮,如果總的初值個數為2時,可以認為a的第二維長度為1,也可以是2,.......),這樣就會產生錯誤.所以,可以a[4]=這樣定義,而不能定義a[3]=。 對於你補充的問題,其實我已經講了.因為賦初值是5個元素,所以5/4=1,但除不盡,所以要加1,即實際陣列a實質上定義為a[2][4],其內元素為: 1 2 3 4 5 0 0 0 (後面的三個0是系統預設值)希望對你有所幫助.^-^ 6樓:匿名使用者 首先 假如定義一個一維陣列 int ary; 缺少了一維陣列的長度 系統無法按大小分配空間; 但假如int ary = ; 就可以根據初始化的元素個數來把ary定義成相當於ary[2]; 這應該能懂 再次c語言中沒有多維陣列的概念 我們平常說的二維陣列其實是「陣列的陣列」 c語言對多維陣列的定義也是定義成 "陣列的陣列的陣列的..." 所以 當定義二維陣列int a[4] = ; 其實是 「定義了兩個以[4]為長度的陣列」(這說法可能不準確)所以在定義二維陣列並初始化時 需要指明第二維的長度 好讓編譯器根據初始化元素的個數來確定陣列的大小 文字表述欠缺專業 但 意思是這樣 希望能明白呵呵 7樓:佳樂比海 主要是分配記憶體的問題. a[i][j]是陣列的陣列,意思是定義i個元素的陣列,每個元素都是一個含有j個元素的陣列. a[4]是定義了n個含有4個元素的陣列,如: a[4]=,,}是定義了3個"含有4個元素的陣列"的陣列.雖然3個自定義的,但是是確定的數字。程式可以分配記憶體. 而a[3]是定定義了3個"含有n個元素的陣列"的陣列.如: a[3]=},由於n的值是不確定的(如上有3個的,2個的),所以程式無法為這個陣列分配記憶體空間. c語言中二維陣列的定義問題 8樓:匿名使用者 正確寫法如下: char fd_jgf1[maxitemlen+1]=;說明:把null去掉 9樓:匿名使用者 1. 二維陣列的第一個維度預設是: 舉個例子:int tar[2] = ; 因為大括號中有4個元素,而且第二個維度是2,所以就可以計算出來第一維度是2.所以是可以預設的。 2. 你的這個例子中,第一維預設的應該是(7*8+1)/(__maxitermlen__+1) 向上取整。 3. 因為fd_jpf1[i]是一個一級指標,儲存的是地址,設定為null表示為空。在這裡應該是把它當做這個陣列中有效元素的結束的標誌了。 10樓:孔培勝羅婉 以二維來說,假若給定的陣列為a[3][5],這是一個二維陣列,在c語言中,計算機在執行這個陣列前,二維陣列就是 a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] a[1][0] a[1][1] a[1][2] a[1][3] a[1][4] a[2][0] a[2][1] a[2][2] a[2][3] a[2][4] 不要看我將它排成3行,其實在計算機內部,它是在一行連續排列的,因此a[0]就代表a[0][0],a[1]代表a[0][1],a[4]代表a[0][4],a[5]代表a[1][0],怎麼來不就是行號1*每行的元素個數+0=1*5+0=5; a[2][2]代表的是2*5+2=12,所以代表a[12].解釋清楚了嗎? 理解了別忘了給我加分(選我)。 c語言中關於二維陣列和指標的問題 11樓: *(p+1)單獨使用時表示的是第 1 行資料,放在表示式中會被轉換為第 1 行資料的首地址,也就是第 1 行第 0 個元素的地址,因為使用整行資料沒有實際的含義,編譯器遇到這種情況都會轉換為指向該行第 0 個元素的指標;就像一維陣列的名字,在定義時或者和 sizeof、& 一起使用時才表示整個陣列,出現在表示式中就會被轉換為指向陣列第 0 個元素的指標 12樓:lzs丶灬 首先p是一個地址 然後p=a,所以p指向了a這個二維陣列 p+2也是一塊地址指向a[2] *(p+2)指向a[2][0] *(p+2)+4指向a[2][4] 你自己理解吧 指標坑爹的一筆 二維bai陣列是由一維陣列構成的,迴圈第du一維輸出zhi就可以了 include stdio.h int main int argc,char argv int i for i 0 i 7 puts s i return 0 執行結果 版空的那一行就是那個權空字串的輸出結果。c語言程式設計 二維陣... 在c語言中,二者是相同的地址值。所以可以說a a.二維陣列a定義為a i j 時,代表一組資料,有i行j列,共計i j的元素。這組資料在記憶體中是連續存放的。而在c語言的使用中,a是二維陣列的首地址。a也就是a 0 是二維陣列第一行的首地址。所以,二者是相同的地址值,即資料a 0 0 的地址值。也就... 你這裡nn裡面確實是二維陣列,char al 10 是說al是一個一維維度為10的二維陣列指標變數。因此和你的ne陣列是對應的,傳參是沒問題的。錯誤在於 1.你的函式呼叫有問題 nn ne 2.你給陣列賦值,al 0 asd 這種使用,是僅在陣列初始化的時候被允許的。如果要實現這個字串放到陣列,可以...關於c語言二維陣列輸出問題,C語言程式設計二維陣列輸出一個23的矩陣
c語言中二維陣列aij為什麼c語言中二維陣列aij為什麼aa
c二維陣列傳遞問題,C語言怎麼以二維陣列作為引數傳遞的問題