C 中的陣列初始化問題

2021-10-02 22:59:59 字數 2991 閱讀 9490

動態陣列初始化

使用new建立陣列的時候,返回的是指向0號元素的指標

int* nums1 = new int[10]; //前兩個元素用給的值,其他的元素用int型別預設值

int* nums2 = new int [10] (); //使用int型別預設值初始化

int* nums3 = new int[10]{}; //使用int型別預設值初始化

int* nums4 = new int[10]; //不初始化陣列

#

include

using

namespace std;

void

show

(int

* num,

int len)

cout<

}int

main()

;//使用預設值初始化陣列

int* nums3 =

newint[10

];//前兩個元素用給的值,其他的元素用int型別預設值

int* nums4 =

newint[10

];//不初始化陣列

show

(nums1,10)

;show

(nums2,10)

;show

(nums3,10)

;show

(nums4,10)

;delete

nums1;

//記得delete,否則會記憶體洩漏

delete

nums2;

delete

nums3;

delete

nums4;

return

0;

memset()函式

所屬標頭檔案:

原型:void * __cdecl memset(void *_dst, int _val, size_t _size);

引數說明:

int _val:表示初始化的值

_size:表示初始化的位元組範圍

案例:

memset

(nums4,-1

,sizeof

(int)*

10);show

(nums4,10)

;delete

nums4;

執行結果:

換個值初始化試試

memset

(nums4,1,

sizeof

(int)*

10);show

(nums4,10)

;delete

nums4;

執行結果:我們得到了一串隨機值

初始化char型陣列

char c[10]

;//上面原始碼部分第2個引數是int*,但是可以傳char型資料

//具體不太清楚,但原始碼就是這樣的

memset

(c,'a'

,sizeof

(char)*

10);show

(c,10

);

執行結果:

總結:對於int型別陣列,memset函式只能初始化為0或-1。能初始化char型陣列,不能初始化float,double

動態開闢二維陣列

int row =3;

int col =4;

int*

* arr2 =

(int**

)malloc

(sizeof

(int*)

* row);if

(null

== arr2)

for(

int i =

0; i < col; i++)}

printf

("%d\n"

, arr2[1]

[2])

;printf

("%d\n",*

(arr2[1]

+2))

;printf

("%d\n",*

(*(arr2+1)

+2))

;// *(arr2+1)使得二級指標變成一級指標

// 陣列名表示陣列首元素位址,arr包括3個元素

int num =1;

for(

int i =

0; i <

3; i++)}

printf

("%d\n"

, arr[1]

[2])

;printf

("%d\n",*

(*(arr+1)

+2))

;//*(arr+1)從指向陣列的指標變成指向元素的指標

C 中陣列初始化

include using std cout using std endl int arr1 5 int arr2 5 int main int pi1 new int 5 int pi2 new int 5 for int i 0 i 5 i cout arr1 i cout endl for i...

陣列初始化問題

一維陣列 include define max 15 intmain b max c max int static d max for int i 0 i max i printf 8d 8d 8d 8d n a i b i c i d i return0 程式執行結果如下 00754158401 ...

C 關於陣列初始化問題

陣列的初始化 分為靜態和自動初始化 若儲存在靜態記憶體,則陣列只初始化一次。如果陣列未初始化將會自動設定為0。但是對於自動變數而言。自動變數的位於執行時候的堆疊之中。而且每次進入 塊 函式 之前,變數所儲存的位置可能不相同。所以自動變數在預設的情況下是未初始化的,每次執行流進入自動變數宣告所在的作用...