03c語言中陣列和結構體

2021-10-03 06:47:56 字數 1466 閱讀 4956

ascii 文字字串

asciz 以空字元結尾的字串

byte 位元組值

double 雙精度浮點值

float 單精度浮點值

int 32 32位整數

long 32 32位整數,和int相同

octa 16位元組整數

quad 8位元組整數

short 16位整數

single 單精度浮點數(與float相同)

主要通過變址來訪問
以下為仿**

//一維陣列訪存

int a[5]

=// 想要訪問陣列中第二個元素,也就是a[1];

//使用彙編表示為 movl (%edx,%eax,4),%eax

movl a,

%ebx

movl 1

,%eax

movl (

%edx,

%eax,4)

//------------二維陣列--------//

int a[

5]=,

,,};

//訪問 a[2];

# %ebx =2;

%ecx =

0x0000

; movl (

,%ebx,5)

,%eax //將a[2][0]值給%eax

//訪問 a[2][3];

# %ebx =2;

%ecx =

0x0000

; movl (

,%ebx,5)

,%eax

%ecx =

3 movl (

%eax,

%ecx,4)

,%eax //將a[2][3]賦值給 %eax

//訪問 a[2]; 訪問四組字串的第三個元素

# %eax =2;

movl $20

,%ebx

movl (a,

%eax,2)

,%eax //a[0][2]

movl (

%eax,

%ebx)

,%eax// a[1][2]

由於系統在記憶體中讀取資料是根據記憶體塊來的,所以需要對齊4,8,16bytes,根據系統不同,就不同
x86-32或64 根據不同型別的資料長度來對齊
假設結構體中最大的對齊要求是k,那麼結構體的大小是k*n

__結構體中元素順序不同,對記憶體有所影響__

union成員共享同一塊大小的記憶體,大小由成員最大的那位,一次只能使用乙個成員

03 C語言 順序結構

順序結構 1 printf 格式1 printf 格式控制 功能 按格式控制指定的格式輸出資料 格式2 printf 普通 佔位符 輸出列表的值 功能 按格式將值輸出 注意1 佔位符 以 開始的,被替換 普通字元 將原樣輸出 佔位符字元 1 d 帶符號十進位制整數 2 u 無符號十進位制整數 3 o...

C語言中關於陣列和結構體

在c語言中使用陣列的時候要時刻注意陣列的範圍以及在程式執行過程中是否會出現陣列越界的情況,本篇說明根據在編寫pat乙級1004題目的 時所犯下的錯誤進行理解陣列。題中需要定義學號和姓名的陣列且學號和姓名不超過10個字元,我的錯誤定義陣列範圍為 char name 10 char course 10 ...

03 c 程式結構

c 對c語言中的結構體做了2個擴充套件 可以在類中實現函式 可以訪問類中的成員函式,如下 class person 那麼能不能在類的外面實現函式呢?可以,在類中宣告,然後在類外面實現,如下 定義乙個類 class person 類外實現函式 void person setname char n 舉乙...