天天看點

數組越界有什麼後果_原來數組是容器喔

和我一起學C吧 

數組越界有什麼後果_原來數組是容器喔

努力是可以提升智力的 5.1.2    數組的使用: 如何定義和使用數組,數組的下标和下标的範圍

前面有數組的簡單介紹,可以去回顧一下其相關定義

數組越界有什麼後果_原來數組是容器喔

    變量名稱[元素數量];

 例:                       int grades[100];

                               double weight[20];

  注:元素數量必須是整數。

數組越界有什麼後果_原來數組是容器喔

  數組的特點:

  • 其中所有的元素具有相同的資料類型;
  • 一旦建立,不能改變大小;
  • 數組中的元素在記憶體中是連續依次排列的。
數組越界有什麼後果_原來數組是容器喔

 數組的單元

  • 數組的每個單元就是數組類型的一個變量
  • 使用數組時放在[ ]中的數字叫做下标或索引,下标從0開始計數:

Grades[0]; Drades[99] ;

數組越界有什麼後果_原來數組是容器喔

   有效的下标範圍

  •  編譯器和運作環境都不會檢查數組下标是否越界,無論是對數組單元做讀還是寫。
  • 一旦程式運作,越界的數組通路可能造成問題,導緻程式崩潰。(segmentation  fault)
  • 也有可能不會造成嚴重後果(機率較小)。
  • 是以,程式的有效下标值:[0,數組的大小-1] 。
數組越界有什麼後果_原來數組是容器喔

  I nt A[10];    A[7]=0;  表示在數組A中,将7這個位置指派為0;      長度為0 的數組,可以存在,但是無用。

5.1.3    數組的例子:統計個數

例題:

寫一個程式,輸入數量不确定的[0,9]範圍内的整數,統計每一種數字出現的次數,輸入-1表示結束。(運作過程中,不定個數的輸入範圍内的數,即可統計每個數輸入的個數)

以下為對應代碼:

數組越界有什麼後果_原來數組是容器喔

5.2.1    數組的運算

數組越界有什麼後果_原來數組是容器喔

  在一組給定的資料中,如何找出某個資料是否存在? 1 、 數組的內建初始化:

Int a[ ]={2,4,6,7,1,3,5,9,11,13,23,14,32}

  • 直接用大括号給出數組的所有元素的初始值。
  • 不需要給出數組的大小,編譯器替你數數。

補充 : int a[13]={2}   // {2,4,6,7,1,3,5,9,11,13,23,14,32};

表示數組為13個數,隻給第一個數指派為2,那其他數都初始化為0。

以下為對應代碼:

數組越界有什麼後果_原來數組是容器喔

2、內建初始化時的定位 Int a[10] = { [0]  = 2, [2] = 3,6,};

  • 用[n]在初始化資料中給出定位;
  • 沒有定位的資料接在前面的位置後面;
  • 其他位置的值補0;
  • 也可以不給出數組大小,讓編譯器算;
  • 特别适合初始資料稀疏的數組。

以下為對應代碼:

數組越界有什麼後果_原來數組是容器喔

3 、 數組 的大小

  • sizeof 給出整個數組所占據的内容的大小,機關是位元組:

                sizeof(a)/sizeof(a[0])

  • sizeof(a[0])給出數組中單個元素的大小,于是相除就得到了數組的機關個數。

 優點: 這樣的代碼,一旦修改數組中初始的資料,不需要修改周遊的代碼。

以下為對應代碼:

數組越界有什麼後果_原來數組是容器喔

4、 數組的指派

  • 數組變量本身不能被指派。
  • 要把一個數組的所有元素交給另一個數組,必須采用周遊(即寫一個循環):

for ( i = 0; i                                                   b[i] = a[i];                                             }

  • 通常都是使用for循環,讓for循環變量i從0到
  • 常見錯誤是:

                          循環結束條件是<=數組長度,或;

                          離開循環後,繼續用i的值來做數組元素的下标!

程式設計練習解析彙總(2) &  數組  其中列印九九表,for語句的代碼貼錯圖了,以下為原代碼:

數組越界有什麼後果_原來數組是容器喔
數組越界有什麼後果_原來數組是容器喔

END

數組越界有什麼後果_原來數組是容器喔
數組越界有什麼後果_原來數組是容器喔

可愛的你一定會

掃一掃它吧❤