C堆上申請二維數組

來源:互聯網
上載者:User

C堆上申請二維數組

之前寫了一篇《C++堆上申請二維數組》,應該說C++的方式相對於C還是更簡單容易理解一些,那麼C如何寫呢?

  • 方法一:通過數組指標申請連續的空間
 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5     // 申請a[3][2]三行兩列二維數組 6     int (*a)[2] = (int(*)[2])malloc(sizeof(int)*3*2); 7     a[0][0] =1; 8     a[0][1] =2; 9     a[1][0] =3;10     a[1][1] = 4;11     a[2][0] =5;12     a[2][1] = 6;13     printf("%d\t%d\t%d\t%d\t%d\t%d\n",a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1]);14     printf("%x\n%x\n%x\n%x\n%x\n%x\n",(int)a,(int)&a[0][1],(int)&a[1][0],(int)&a[1][1],(int)&a[2][0],(int)&a[2][1]);15     free(a);16     return 0;17 }

注意,理解指標a的類型為int(*)[2]是理解演算法的關鍵。

  • 方法二:同C++,容易理解的,多個一維指標申請多次,但空間不連續。
1     int **a;2     int i;3     a = (int **)malloc(sizeof(int *)*3);4     for (i=0; i<3; i++)5         a[i] = (int *)malloc(sizeof(int)*2);

兩種方法各有優劣。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.