陣列的初始化和二維陣列 指標與陣列

2021-09-20 19:19:26 字數 3527 閱讀 1247

1、陣列的初始化,比較簡單,例項程如下:

1

2

3

4

5

6

7

8

9

#include

# define m 12

intmain(void);

inti;

for(i=0;iprintf("months %d has %2d days.\n",i+1,days[i]);

return0;

}

執行結果如下:

2.未經初始化的陣列:

例項程式;

1

2

3

4

5

6

7

8

9

10

11

#include

# define m 12

intmain(void);

inti;

for(i=0;i//printf("months %d has %2d days.\n",i+1,days[i]);

printf("%d  %d\n", i,n[i]);

return0;

}

執行結果:

由此可知,在初始化之前,陣列元素的值是不確定的,編譯器使用的數值是儲存單元中已有的數值,上面的輸出結果是不一定的。

3、在初始化陣列的時候,編譯器很機智,即使你給的元素數目小於或者為給定陣列大小,編譯器會自動識別,不夠的話,它會自己用0代替。但是當初始化列表中有太多對的數目時,編譯器會提醒錯誤。too many initializers太多初始化。如下刪去幾個元素,則結果:

4、二維陣列,舉個栗子:floatrain[5][12] 首先,rain[5]表示乙個包含五個元素的陣列,至於每個元素的情況,需要檢視宣告的其餘部分。剩餘的便是float,表示12浮點數的 陣列。總之,該二維陣列表示:rain具有5個元素,並且每個元素都是包含12個數值的陣列。

具體理解畫圖如下:也算是挺明了的了。

5、指標和陣列

指標提供了用來一種用來使用位址的符號方法。由於計算機的硬體指令很大程度上依賴於位址,所以指標能夠使您以類似於計算機底層的底層的表達方式來表達自己的意願。這使得應用了指標的程式能夠更高效的工作,特別的,指標能夠很有效的處理陣列。

例子:陣列名同時也是該陣列首元素的位址。如a是一陣列,則a==&a[0]//陣列名是該陣列首元素的位址。

指標加法:示例程式:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include

#define size 4

intmain(void)

執行結果:

解析:我們的系統是按位元組編制的,short型別使用兩個位元組,double型別8個位元組,在c中,對乙個指標加1的結果是對該指標增加乙個儲存單元。對於陣列而言,位址會增加到下乙個元素的位址,而不是下乙個位元組,這就是為什麼在宣告指標時必須宣告它所指的物件型別,計算機需要知道儲存物件所用的位元組數。

關於指標:

指標的數值就是它所指向物件的位址,位址的內部表示方式是由硬體決定的,很多計算計算機都是以位元組編址的,這意味著對每個記憶體位元組順序進行編號,對於包含多個位元組的資料型別,比如double,物件的位址通常指首位元組的位址。

在指標前運用*就可以得到該指標所指向的物件的數值。

對指標加1 ,等價於對指標的值加上他指向物件的位元組的大小。

動態開闢二維陣列,初始化二維陣列指標

動態開闢二維陣列主要有兩種方法 1 用new在堆上開闢 2 用vector開闢。比如用new開闢 int output new int row for int i 0 i 用delete銷毀記憶體空間,一定要記得 for i 0 i row i delete output output null 比...

二維陣列的初始化

1.使用兩個for迴圈定義 for i 1 i n i 2.定義時初始化 int a n m 3.使用函式定義 memset 作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法 memset函式對陣列只能用於置零 0 或置負一 1 操作 include voi...

二維陣列的初始化

1.不分行的初始化,所有陣列元素放在一對 內 1 全部元素初始化 a 2 3 2 部分元素初始化 a 2 3 未初始化的元素預設為0,即a 1 1 0,a 1 2 0。3 省略一維長度下標時的初始化 行下標 a 3 陣列元素個數除以列數,正好除盡,所得的商就是行數。a 3 陣列元素個數除以列數,除不...