C語言基本語法——數組

  1、一維數組數組

  一、什麼是數組數據結構

  二、數組語法函數

  三、下標指針

  四、初始化索引

  五、數組名和數組首地址內存

  2、一維數組的應用it

  一、數組的賦值與拷貝  io

  二、數組的正反遍歷class

  三、隨機數容器

  四、數組亂序

  五、數組的重複

  3、二維數組

  一、數組的數組

  二、二維數組的初始化

  三、二維數組的數組名

  4、二維數組的應用

  一、二維數組與二維表

  二、下標計算

 

1、一維數組

  一、什麼是數組

  • 數組是用來存儲多條相同數據類型的數據結構。(容器)

  分析關鍵點:

-多條
-類型相同

-數組是數據的容器,而非數據自己
-數組中的每個數據,叫元素,數組由多個元素(數據)組成。-數據下標(索引)來區分數據中的元素
-元素從數組的位置0開始

-元素可使用數組變量名[下標]來獲得具體的元素-數組中元素的個數叫數組的長度
-數組所佔空間=元素的類型*數組的長度
-數組是一段連續的內存區域 指針
-數組變量指向的區域,是數組在內存中的首地址

  二、數組語法

  • 定義數組: 元素類型 數組名[元素個數];

  int array[3];

  • 訪問元素: 數組名[下標]

  array[0] = 10;

  三、下標

  • 下標是指訪問數組元素時,中括號中的數字

  • 下標不能越界,若是越界,可能會致使如下後果:

–程序直接崩潰
–莫明的改變了其餘變量或數據空間的值
–什麼事兒都沒有

  四、初始化

  • 賦使用的值

  int array2[3]={3,4,5};//依次給數組元素賦值
  int array4[3]={1,2};//若是賦值的個數少於數組 的長度,會 自動用0來填充後面的值

  • 賦零值

  int array[3];//未初始化 可能存在垃圾時

  int array3[3]={0};//數組中每一個元素是0

  五、數組名和數組首地址

  • 數組名是一個地址,並且是不可變的地址

  • 數組名不能夠作爲左值,就是不能出如今賦值語句的左邊。初始化除外。

  • 數組名是常量(指針)。 因此不能賦值

 

  2、一維數組的應用

  一、數組的賦值與拷貝  

  • 數組的賦值

int array[10];
array[2] = 10;//將數組的第三個元素賦值爲10

  • 數組的拷貝

int array[10] = {1,2,3,4,5,6,7,8,9,0};

int num [10];
for (int i = 0; i < 10; i++)

  num[i] = array[i];

  二、數組的正反遍歷

  • 數組的正向遍歷

int array[10] = {1,2,3,4,5,6,7,8,9,0};

for (int i = 0; i < 10; i++)

  printf(「%d 」,array[i]);

  • 數組的反向遍歷

for (int i = 9; i >= 0; i--)

  printf(「%d 」,array[i]);

  三、隨機數

  • rand()函數用於生成一個隨機數

  • srand()函數用於定義隨機種子

int main() {

  srand((unsigned)time(0));   

  for (int i=0; i<10; i++) {

    int x = rand() % 100;

  } 

  printf("%d ", x);

  printf("\n");

  return 0;

}

  四、數組亂序

  • 數組亂序是指將數組中的元素隨機排列

int main() {

  int array[10] = {1,2,3,4,5,6,7,8,9,0};

  srand((unsigned)time(0));
  for (int i=0; i<10; i++) {

    int x = rand() % (10 - i) + i;

     int temp = array[i];
    array[i] = array[x];

  } 

  array[x] = temp;

  for (int i=0; i<10; i++)

    printf("%d ", array[i]);

  return 0;

}page17image5774240

  五、數組的重複

  • 數組元素的重複是指將數組中存在相同的數組元素

 

  3、二維數組

  一、數組的數組

  • 定義數組: 元素類型 數組名[元素個數] [元素個數];

int array[3][4];

  • 訪問元素: 數組名[下標] [下標]

array[1][2] = 10;

  二、二維數組的初始化

  • 對應元素內容

int array2[3][2]={{1,2},{3,4},{5,6}};

  • 總體賦值

int array2[3][2]={1,2,3,4,5,6};

  • 依次賦值 自動補零

int array2[3][2]={1,2,3,4};

  三、二維數組的數組名

  • 二維數組名一樣是一個地址,並且是不可變的地址

  • 二維數組名一樣不能夠作爲左值,就是不能出如今賦值語 句的左邊。初始化除外。

  • 二維數組名是常量(指針)。 因此不能賦值

 

  4、二維數組的應用

  一、二維數組與二維表

  • 二維數組實際上是數組的數組
  • 能夠將二維數組理解爲一張幾行幾列的二維表。

  二、下標計算

  • 二維數組在內存中的存放方法是先存放列再存放行

eg:int array[3][4];

在內存的存放順序是:

array[0][0]

array[0][1]

array[0][2]

array[0][3]

array[1][0]

array[1][1]

array[1][2]

array[1][3]

array[2][0]

array[2][1]

array[2][2]

array[2][3]

相關文章
相關標籤/搜索