C語言 陣列和指標

2022-03-09 02:52:21 字數 2308 閱讀 5618

陣列有一系列相同的元素構成。使用陣列宣告來告訴編譯器需要乙個陣列。數值宣告包括陣列元素的數目和元素的型別。

要訪問陣列中的元素可以使用下標(index)來表示單個元素,index是從0開始計數的

陣列的初始化:

比如

days[12]=

如果陣列沒有初始化

比如

int no_data[4]

當列印出陣列元素時,陣列的值是不定的。因為編譯器使用的數值是儲存單元中已有的數值。

初始化列表中的元素數目應該和陣列大小一致。如果二者不一致:

1.比如當數值數目少於陣列元素數目時,多餘的陣列元素被初始化為0。例子如下:

1 #include 

2#define size 4

3int main(void)

4 ;6

int i;

7 printf("

%2s%14s\n

","i

","some_data[i]

");8

for(i=1;i9 printf("

%2d%14d\n

",i,some_data[i]);

10return

0;11 }

output:

i  some_data[i]

1106620

30

2.如果初始化列表中專案的個數大於陣列大小,編譯器會認為這個乙個錯誤。程式就無法執行。

可以省略括號中的數字,從而讓編譯器自動匹配陣列的大小和初始化列表中的專案數目

1 #include 

2int main(void)

3 ;5

/*const:

6有時需要使用唯讀陣列,也就是程式從陣列中讀取數值,但是程式不想陣列中寫入資料。在這種情況下,可以使用關鍵字const。這樣,程式會把陣列中的每個元素當成常量來處理。用const宣告之後不能再對它賦值*/7

int index;8/*

運算子sizeof給出其後的物件或型別的大小(以byte為單位)*/9

for(index=0;index10 printf("

monsth %2d has %d days.\n

",index+1,days[index]);

11return

0;12 }

多維陣列

多維陣列是陣列的陣列。比如5年中每月的降水用float rain[5][12]來表示。可以解釋為rain具有5個元素,並且每個元素都是包含12個float數值的陣列。

用二維檢視表示陣列可以直觀的想象兩個索引的陣列。實際上,陣列是順序儲存的,前12個元素之後,耕者就是第二個包含23個元素的陣列。

多維陣列的初始化要注意幾個問題:

1.比如:

const

float rain[5][12]=,

,......

}

第乙個列表中只有4個數值,則第一行只有前4個元素得到賦值,最後8個元素被預設初始化為0。如果列表中的數值多於12個,則報告錯誤,程式無法執行,而且這些數值不會影響到下一行的賦值。

2.初始化的時候也可以省略內部的花括號,只保留最外面一對花括號。只要保證數值的個數正確,初始化效果就是一樣的。如果數值的個數不夠,那麼在陣列初始化時候,按照先後順序來逐行賦值,一次前面的元素首先得到賦值,直到後面沒有賦值的元素被初始化為0.

指標和陣列

陣列名同時也是該陣列首元素的位址

1 #include 

2#define size 4

3int main(void)

4

output:

short

double

pointers + 0: 0028ff0c 0028fee8

pointers + 1: 0028ff0e 0028fef0

pointers + 2: 0028ff10 0028fef8

pointers + 3: 0028ff12 0028ff00

在上面的例子中,對乙個指標加1的結果是對該指標增加乙個儲存單元。

因為在c語言中:對乙個指標加1的結果是對該指標增加乙個儲存單元(也就是說:對指標加1,等價於對指標的值加上它指向的物件的位元組大小)。對陣列而言,位址會增加到下乙個元素的位址,而不是下乙個位元組。

比如: *(days+index)和days[index]等價

//未完成

C語言 指標陣列和指標陣列

本質是陣列 只不過呢,它裡面存放的資料型別不是int,也不是char這類基本型別,而是乙個指標型別,說白了就是位址,所以叫指標陣列!記住 是存放指標的陣列!int p n 本質是指標 只不過是指向乙個陣列的指標,也稱之為 行指標 int p n p是乙個指標,指向乙個int型別的一位陣列,這個一位陣...

C語言陣列和指標

1.陣列和指標的宣告 1.指向整數的指標宣告 int x 2.整數陣列宣告 int y 2.如果把int mango 100 用int mango來使用,就會發生型別不匹配錯誤 乙個是指標,乙個數陣列名 3.宣告和定義 1.定義只能進行一次,只能出現在乙個地方。定義相當於特殊的宣告,它為物件分配記憶...

c語言 陣列和指標

指標可以理解為乙個變數,是乙個專門用來存放位址的變數。int ptr null 整型指標,內容為空。char ptr null char型指標,內容為空。float ptr null 浮點型指標,內容為空。可如下使用 int a 10 int ptr a char指標解引用只能訪問乙個位元組大小,而...