首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言入門筆記(三):sizeof、記憶體位址、一維/二維陣列佈局詳解

     編輯:關於C語言

sizeof 運算子

  • 編譯期計算型別/變數/常值佔用的**位元組數**;
  • sizeof(int)、sizeof(var)、sizeof 10 皆合法;
  • 回傳 size_t(無號整數),列印用 %zu。

記憶體位址概念

  • 每個位元組有唯一編號(位址),以十六進位表示;
  • 變數宣告時,系統分配連續位元組,**第一個位元組的位址即為變數位址**;
  • &var 取得位址,%p 列印。

一維陣列記憶體佈局

int a[5] = {10, 20, 30, 40, 50};
// 假設起始位址 0x1000,int 4 位元組
// a[0] @ 0x1000, a[1] @ 0x1004, a[2] @ 0x1008 ...
// 關鍵等價關係:
// a == &a[0] == (int*)0x1000
// a+i == &a[i]
// *(a+i) == a[i]

二維陣列記憶體佈局(行優先)

int b[2][3] = {{1,2,3}, {4,5,6}};
// 連續儲存:1,2,3,4,5,6
// b[0] 為第一行陣列,類型 int[3],位址同 &b[0][0]
// b[1] 為第二行陣列,位址同 &b[1][0]
// b   == &b[0] == &b[0][0]
// b+1 == &b[1] == &b[1][0]
二維陣列記憶體圖解

陣列初始化完整語法

  1. 上一篇文章:
  2. 下一篇文章:
欄目導航
Copyright © 程式碼之家 All Rights Reserved