動態陣列初始化
使用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。但是對於自動變數而言。自動變數的位於執行時候的堆疊之中。而且每次進入 塊 函式 之前,變數所儲存的位置可能不相同。所以自動變數在預設的情況下是未初始化的,每次執行流進入自動變數宣告所在的作用...