複製鏈接
請複製以下鏈接發送給好友

一維數組

鎖定
一維數組,是由數字組成的以單純的排序結構排列的結構單一的數組,是計算機程序中最基本的數組。二維及多維數組可以看作是一維數組的多次疊加產生的。
在程序中可以使用下標變量,即説明這些變量的整體為數組,數組中的每個變量的數據類型是相同的。
當數組中每個元素都只帶有一個下標時,稱這樣的數組為一維數組。
數組是計算機編程中的重要概念,運用數組可以方便地處理大規模的數據。 [1] 
中文名
一維數組
外文名
linear array
定    義
由數字組成的以單純的排序結構排列的結構單一的數組

一維數組定義

數組的定義格式如下:
類型標識符 數組名[常量表達式]
説明:
①數組名的命名規則與變量名的命名規則一致
②常量表達式表示數組元素的個數。可以是常量或符號常量,不能為變量。
例如: [1] 
      int a[10];                     //數組a的定義是合法的
      int a[n];                      //若n為變量,則數組a的定義是非法的

一維數組性質

一維數組引用

通過給出的數組名稱和這個元素在數組中的位置編號(即下標),程序可以引用數組中的任意一個元素。
在C++中,一維數組的引用格式為:數組名[下標]
例如: int a[10];
其中,a是一維數組的數組名,該數組有10個元素,依次表示為a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]。需要注意的是,a[10]不屬於這一個數組的空間範圍中。當在説明部分定義了一個數組變量後,編譯程序會在內存空間中開闢一串連續的存儲單元。對於數組而言,程序的執行部分使用的是數組變量而不是數組類型。需要注意的是:在引用時,下標可以是整型變量或整型表達式。如果使用表達式,會先計算表達式以確定下標。程序只能逐個應用數組中的元素而不能一次引用整個數組。如: [2] 
int a[100],b[100]; a=b;                   //這是非法的
數組名不能與其他變量名相同,如:
int a;


float a[10];
                              //這是非法的
不能在方括號中用變量來表示元素的個數,如:
int n=5;


int a[n];                                 //這是非法的
但可以是符號常數或常量表達式
int a[3+2];                               //這是合法的

一維數組初始化

數組的初始化可以在定義時一併完成。格式如下:
   int a[5]={1,2,3,4,5};
c++語言對數組的初始化賦值還有以下幾點規定:
(1)可以只給部分元素賦初值
當{}中值的個數小於元素的個數時,只給前面部分元素賦值,例如:
int a[10]={0,1,2,3,4};
表示只給a[0]~a[4]五個元素賦值,後面的元素自動賦0。
(2)只能給元素逐個賦值,不能給數組整體賦值。
例如給十個元素全部賦1值,只能寫成
int a[10]={1,1,1,1,1,1,1,1,1,1};
而不能寫成
int a[10]=1;
(3)如給全部元素賦值,則在數組中説明,可以不給出數組元素的個數,例如:
int a[5]={1,2,3,4,5}
可寫成
int a[]={1,2,3,4,5}

一維數組應用

一維數組成員操作函數

以下函數的應用可以簡單、快捷地操作數組內的部分或所有變量。使用以下函數時,必須包含頭文件<cstring>或<string.h>。
memcpy(b,a,sizeof(int)*k):memcpy函數用於將數組a中複製k個元素至數組b中,定義式中的int應根據需要選擇合適的數據類型。特別地,當要把全部數據複製到另一數組中時,可以簡寫為:memcpy(b,a,sizeof(a))。
memset(a,0,sizeof(a)):memset函數的作用是把數組a清零。這個函數的作用可以用for循環實現:
for(int i=1;i<=n;i++)a[i]=0;
表達式中的“0”可以為1,。 [2] 

一維數組實例

C++語言:輸入n個數,要求程序按輸入時的逆序把這n個數輸出,已知整數為10個。
#include <iostream>
using namespace std;
int main()
{
    int i,a[10];
    for(i=0;i<=9;i++)
    {
        a[i]=i;
    }
    for(i=9;i>=0;i--)
    {
        cout<<a[i];
    }
    return 0;
}
C語言:輸入n個數,要求程序按輸入時的逆序把這n個數輸出,已知整數不超過一百個。 [2] 
#include <cstdio>
int a[100];
int main(){
    int a,n = 0;
    while(scanf("d",&x)==1)
      a[n++]=x;                      //相當於a[n]=x;n++;
    for(int i = n-1;i>=1;--i)
        printf("%d ",a[i];
    printf("%d\n",a[0];
    return 0;
    }
參考資料
  • 1.    董永建 舒春萍.信息學奧賽一本通(C++版).北京:科學技術文獻出版社,2014年10月:66頁
  • 2.    譚浩強.《c程序設計》.清華大學出版社:清華大學出版社,2010.6:142