陣列(arr[])

Lin_Zin發表於2017-11-26

一,定義

int arr[10]={1,2,3,4,5,6,7,8,9,10};定義時10表示陣列長度,可傳入長度

每個格子位元組數為:

sizeof(arr[0])

求長度公式為:

sizeof[arr]/sizeof(arr[0]);

二,應用

1,int arr[10]={1,2,3};聚合型別只初始化一部分,其餘部分為0;int brr[10];得到的陣列brr均是隨機值。使用陣列時i表示下標,從0開始。

2,陣列名錶達整個陣列只有兩種情況,(1)在定義陣列的同一個函式中求&arr,&arr+1,加整個陣列的大小。(2)在定義陣列的同一個函式中求sizeof(arr)。其他情況下陣列名錶示陣列首元素的地址。

三,舉例

1,用陣列表示Fibonacci函式


#include<stdio.h>
void show(int arr[],int len)
{
for(int i=0;i<len;i++)
{
printf("%d  ",arr[i]);
}
printf("\n");
}
void Fibonacci(int arr[],int len)
{
arr[0]=1;
arr[1]=1;
for(int i=2;i<len;i++)
{
arr[i]=arr[i-2]+arr[i-1];
}
}
int main()
{
int arr[]={1,2,4,5,6,7,8,9};
Fibonacci(arr,sizeof(arr)/sizeof(arr[0]));
show(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}

輸出結果為

2,順序輸出陣列和逆序輸出陣列


#include<stdio.h>

void show(int arr[],int len)//在所有的一維陣列中都要定義長度.
{
for(int i=0;i<len;i++)//陣列下標從0開始,i必須小於陣列長度,否則越界
{
printf("%d",arr[i]);
}
printf("\n");
}
void Reverse(int arr[],int len)//定義逆序輸出的函式
{
int tmp;//用來存放陣列中下標為i的值
for(int i=0;i<len/2;i++)//交換的趟數為其長度的一半,否則會交換回原來次序
{
tmp=arr[i];//交換下標為i的數字和其對應位置的數字
arr[i]=arr[len-i-1];
arr[len-i-1]=tmp;
}
//show(arr,len);//方法1:不在主函式中呼叫,直接在Reverse中呼叫show函式中的輸出
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9};
//show(arr,sizeof(arr)/sizeof(arr[0]));//不能寫在前面,否則不輸出逆序陣列,如果要同時輸出陣列和其逆序,要呼叫兩次
Reverse(arr,sizeof(arr)/sizeof(arr[0]));
show(arr,sizeof(arr)/sizeof(arr[0]));//方法二,在主函式中呼叫show用來逆序輸出陣列
return 0;


輸出結果為:



相關文章