陣列
1.一維陣列
#include<stdio.h>
int main()
{
int arr[10];
return 0;
}
創建一個陣列,存放整型10個,[const_n]中的const_n應該是一個常量運算式,
int n=5;
char ch[n];
這樣的代碼是錯誤的,因為n不是常量,
int main()
{
int arr[10]={1,2,3};//不完全初始化
return 0;
}
這叫不完全初始化,剩下元素默認初始化為0.
#include<stdio.h>
#include<string.h>
int main()
{
char arr[]="abcdef";
printf("%d\n",sizeof(arr));
printf("%d\n",strlen(arr));
return 0;
}
sizeof計算所占空間大小,而strlen計算字串長度,\0停止并不算\0.


int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%d\n",sizeof(arr1));
printf("%d\n",sizeof(arr2));
printf("%d\n",strlen(arr1));
printf("%d\n",strlen(arr2));
return 0;
}

int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr)/sizeof(arr[0]);
int i = 0;
for(i=0;i<sz;i++)
printf("&arr[%d] = %p\n",i,&arr[i]);
return 0;
}
我們列印出每個元素地址,可以發現每個均差4,因為每個元素都是整型,為四個位元組,

結論:陣列在記憶體中是連續存放,
2.二維陣列
int main()
{
int arr[3][4];
return 0;
}
定義一個三行四列的陣列
int main()
{
int arr[3][4]={1,2,3,4,5};
return 0;
}
這樣元素怎么存放呢?我們通過除錯

發現第一行放1234,多余的放入第二行,那如果我們想第一行放123,第二行放45怎么操作呢??
int main()
{
int arr[3][4]={{1,2,3},{4,5}};
return 0;
}
通過除錯

發現第一行就是123,第二行45
注:行可以省略,列不能省略,
3.二維陣列的使用:
int main()
{
int arr[3][4]={{1,2,3},{4,5}};
int i=0;
for(i=0;i<3;i++)
{
int j = 0;
for(j=0;j<4;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}

int main()
{
int arr[3][4]={{1,2,3},{4,5}};
int i=0;
for(i=0;i<3;i++)
{
int j = 0;
for(j=0;j<4;j++)
{
printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);
}
}
return 0;
}

我們發現每個地址仍然差4,也是連續的,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276987.html
標籤:其他
上一篇:前端Promise總結筆記
