c語言陣列賦值

2021-08-07 13:12:04 字數 1023 閱讀 2644

最近在學c語言,把給陣列賦值的方式總結一下:

1、利用malloc

#include

#include

void main()

{int * a;

a = (int *)malloc(2*sizeof(int));

int i=0;

int j=1;

a[0] = i;

a[1] = j;

int times;

for (times=0;times

2、直接宣告陣列

#include

void main()

{int  a[2];

int i=0;

int j=1;

a[0] = i;

a[1] = j;

int times;

for (times=0;times

新手注意點:

1、需要引用的標頭檔案:輸入輸出要引用, malloc函式要引用

2、計算陣列的元素個數:sizeof(a)/sizeof(int)

3、malloc函式的原理:

(1)分配長度為指定數量的記憶體塊:malloc(2*sizeof(int)),這裡指定存放兩個整數,共8個位元組

(2)記憶體不在使用時,要記得釋放記憶體:free(a);

(3)malloc 函式返回的是 void * 型別,如果你寫成:p = malloc (sizeof(int)); 則程式無法通過編譯,報錯:「不能將 void* 賦值給 int * 型別變數」。所以必須通過 (int *) 來將強制轉換。

(4)malloc()函式其實就在記憶體中找一片指定大小的空間,然後將這個空間的首位址範圍給乙個指標變數,這裡的指標變數可以是乙個單獨的指標,也可以是乙個陣列的首位址,這要看malloc()函式中引數size的具體內容。我們這裡malloc分配的記憶體空間在邏輯上連續的,而在物理上可以連續也可以不連續。對於我們程式設計師來說,我們關注的是邏輯上的連續,因為

作業系統

會幫我們安排記憶體分配,所以我們使用起來就可以當做是連續的

c 陣列賦值

c 中陣列複製有多種方法 陣列間的複製,int pins int alias pins 這裡出了錯誤,也是錯誤的根源,以上 並沒有出錯,但是根本不是複製,因為pins和alias都是引用,存在於堆疊中,而資料9,3,4,3是乙個int物件存在於堆中,int alias pins 只不過是建立另乙個引...

C 陣列賦值

情況1 無 如果沒有初始化函式中定義的陣列,則其元素將是不確定的,這意味著元素的值為以前駐留在該記憶體單元中的值。int includeusing namespace std int main system pause return 0 輸出 858993460 2 858993460 858993...

C語言陣列賦值一例

在移植核心時,發現乙個驅動使用陣列十分巧妙。一般地,操作cpu某一外設寄存,不是直接使用完整的位址,而是通過相對位址來訪問。比如,訪問定時器,首先參考手冊定義好定時器基位址,然後再定義暫存器 如控制暫存器 讀資料暫存器等 對於定時器基位址的偏移位址。在使用時,一般都是使用偏移位址的,這樣十分方便 快...