當前位置:編程學習大全網 - 編程軟體 - C語言中int *p[5]與 int (*p)[5]的區別

C語言中int *p[5]與 int (*p)[5]的區別

壹、作用不同:

優先級的問題,[]的優先級高於*,這就是為什麽後者加了壹個(),int *p[5]定義壹個指針數組p,講到底這個p是壹個數組,數組內的元素是5個指針,而數組內的每壹個指針指向壹個int型的變量;int (*p)[5]定義了壹個指向5個元素的壹維數組的指針。

二、含義不同:

第二個就是這個指針所指的值是壹個大小為5個int的數組的首地址。p+1(數組地址+1)代表內存地址下移了5個單位。

三、使用不同:

int (*p)[5];

int a[10][5];

p=&a[1]; // 現在(*p)就等於a[1] 所以 a[1][2]可以表示為(*p)[2]

擴展資料:

二維數組A[m][n],這是壹個m行,n列的二維數組。設a[p][q]為A的第壹個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按“行優先順序”存儲時則元素a[i][j]的地址計算為:

LOC(a[i][j]) = LOC(a[p][q]) + ((i ? p) * n + (j ? q)) * t

按“列優先順序”存儲時,地址計算為:

LOC(a[i][j]) = LOC(a[p][q]) + ((j ? q) * m + (i ? p)) * t

存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個字節?

百度百科-二維數組

  • 上一篇:農業銀行招聘考試筆試有哪些經驗求分享壹下
  • 下一篇:為什麽人工智能可以幫助程序員找到工作呢?
  • copyright 2024編程學習大全網