——黑馬程序員——C語言中一維數組基本概念和初始化

-----------android培訓java培訓、java學習型技術博客、期待與您交流!-----------

C語言中一維數組基本概念和初始化

一、基本概念

數組:一組有序且類型相同數據的集合
數組元素:構成數組的每個數據
數組下標:數組中每個數組元素的位置的索引或指示,下標從0開始
數組的維數:數組元素下標的個數,根據數組的維數可以分爲一維、二維、三維和多維數組

二、分類

按存儲內容分爲:
數值數組:用來存儲數值的
字符數組:用來存儲字符'a'
指針數組:用來存儲指針(地址)的
結構數組:用來存放一個結構類型的數據

一維數組:只用一個下標的數組
一般形式:類型符  數組名 [ 常量表達式 ],如  int a[5],表示定義了一個整型數組,數組名爲a,此數組有5個整型元素,5也稱作是數組的長度
一維數組初始化:給各個數組元素賦值
初始化方式:

三、一位數組的初始化

1、定義的同時全部初始化

 int a[5] = {0,1,2,3,4};

2、定義的同時部分初始化

int a[5] = {0,1,2};
a數組中有5個元素,只給前3個元素初始化了值,系統會自動給後面2個元素賦值爲0
int a[5] = { [3] = 1,[4] = 2 };
a數組中有5個元素,只給下標爲3的元素 a[3] 賦值爲1,下標爲4的元素 a[4] 賦值爲2,系統會自動給其他元素賦值爲0

3、定義的同時使數組全部賦值爲0

int a[5] = {0};
a數組中有5個元素,只給第一個元素賦值爲0,系統會自動給其他元素賦值爲0
int a[5] = {0,0,0,0,0};
a數組中有5個元素,給數組所有元素賦值爲0

4、當對於數據的個數已經確定是,可以不指定數組長度

int a[ ] =  { 0,1,2,3,4 }

5、先定義然後初始化

int a[5];
a[0] = 0;
a[1] = 1;
a[2] = 2;
a[3] = 3;
a[4] = 4;
代碼如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{

    printf("一維數組初始化方式:\n");
    //1、定義同時初始化
    int a[5] = {0,1,2,3,4};
    int i;
    //遍歷數組中的每個元素
    printf(" 1、定義同時初始化\n");
    for(i = 0; i < 5; i++)
    {
	//打印數組元素的每個值
	printf("	數組元素的值爲:%d\n",i,a[i]);
    }
    
    
    //2、定義同時部分初始化
    int a1[5] = {0,1,2};
    int j;
    //遍歷數組中的每個元素
    printf(" 2、定義同時部分初始化\n");
    for(j = 0; j < 5; j++)
    {
	//打印數組元素的每個值
	printf("	數組元素的值爲:%d\n",a1[j]);
    }
    
    
    //2、定義同時部分初始化
    int a2[5] = {[3] = 1,[4] = 2};
    int k;
    //遍歷數組中的每個元素
    printf(" 2、定義同時部分初始化\n");
    for(k = 0; k < 5; k++)
    {
	//打印數組元素的每個值
	printf("	數組元素的值爲:%d\n",a2[k]);
    
    }
   
     //3、定義同時全部初始化爲0
    int a3[5] = {0};
    int m;
    //遍歷數組中的每個元素
    printf(" 3、定義同時全部分初始化爲0\n");
    for(m = 0; m < 5; m++)
    {
	//打印數組元素的每個值
	printf("	數組元素的值爲:%d\n",a3[m]);
    }
    
    
    //3、定義同時全部初始化爲0
    int a4[5] = {0,0,0,0,0};
    int n;
    //遍歷數組中的每個元素
    printf(" 3、定義同時全部分初始化爲0\n");
    for(n = 0; n < 5; n++)
    {
	//打印數組元素的每個值
	printf("	數組元素的值爲:%d\n",a4[n]);
    }
    
    
    //4、不指定數組的長度
    int b[] = {0,1,2,3,4};
    int t;
    //遍歷數組中的每個元素
    printf(" 4、不指定數組的長度\n");
    for(t = 0; t < 5; t++)
    {
	//打印數組元素的每個值
	printf("	數組元素的值爲:%d\n",b[t]);
    }
    
     //5、先定義後初始化
    int a5[5]; 
    int r;
    	a5[0] = 0;
	a5[1] = 1;
	a5[2] = 2;
	a5[3] = 3;
	a5[4] = 4;
    //遍歷數組中的每個元素
    printf(" 5、先定義後初始化\n");
    for(r = 0; r < 5; r++)
    {
	//打印數組元素的每個值
	printf("	數組元素的值爲:%d\n",a5[r]);
    }       
	system("pause");
	return 0;
}
測試結果爲:



注意:如果一個數組不初始化,裏面的值會是垃圾值,因此數組使用之前一定要初始化,建議定義的時候就初始化

測試代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    //定義一個數組但不初始化
    int a[5];
    int n;
    //遍歷數組中的每個元素
    for(n = 0; n < 5; n++)
    {
	//打印數組元素的每個值
    <span style="white-space:pre">	</span>printf("\n");
	printf("  數組元素的值爲:%d\n",a[n]);
    }
	system("pause");
	return 0;
}
測試結果:

四、一位數組的存儲方式

計算機給數組分配一塊連續的存儲空間

測試代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    int j;
    //定義一個整型數組並初始化
    int a[5] = {0,1,2,3,4};
    //定義一個字符數組並初始化
    char ch[3] = {'a','b','c'};
    //打印整型數組a[5]的元素地址
    printf("數組a[5]每個元素的地址爲\n");	

    //用for循環取數組元素的地址
    for(i = 0; i < 5; i++)
    {
	//打印出數組每個元素的地址
	printf("  %p\n",&a[i]);
    }
    
    
    //打印字符數組的元素地址
    printf("數組ch[3]每個元素的地址爲\n");	

    //用for循環取數組元素的地址
    for(j = 0; j < 3; j++)
    {
	//打印出數組每個元素的地址
	printf("  %p\n",&ch[j]);
    }
	system("pause");
	return 0;
}
測試結果:

數組名代表數組的首地址,從首地址的位置一次存入數的每一個元素

每個元素佔用相同的字節數,所佔字節數取決於數組的類型

每個數組元素之間的地址是連續的

測試代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
      int i;
      int j;
    //定義一個整型數組並初始化
    int a[5] = {0,1,2,3,4};
    //定義一個字符數組並初始化
    char ch[3] = {'a','b','c'};
    //打印整型數組a[5]的首地址
	printf("數組a[5]的首地址爲:%p\n",&a);
    
    //打印整型數組a[5]的元素地址
	printf("數組a[5]每個元素的地址爲\n");	

    //用for循環取數組元素的地址
    for(i = 0; i < 5; i++)
    {
	//打印出數組每個元素的地址
	printf("  %p\n",&a[i]);
    }
    
    
    //打印字符數組的首地址
    printf("數組ch[3]的首地址爲:%p\n",&ch);	
    
    //打印字符數組的元素地址
    printf("數組ch[3]每個元素的地址爲\n");	

    //用for循環取數組元素的地址
    for(j = 0; j < 3; j++)
    {
	//打印出數組每個元素的地址
	printf("  %p\n",&ch[j]);
    }
	system("pause");
	return 0;
}
測試結果:

結論:

數組名是一個常量,存儲的是數組的首地址,數組名的地址和數組元素的第一個元素地址相同!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章