// 格式
type_t arr_name [const_n];
//数组元素类型 名称 [常量表达式],用来指定数组大小
//例
#include<stdio.h>
#include<strlen.h>
int main()
{
int arr[10]={1,2,3};//不完全初始化,剩下元素默认为初始值
char arr2[5]={'a','b'};
char arr3[5]="ab";//表达效果与arr2相同,不同的是在ab后面有一个'\0'
char arr4[]="abcdef";//当未定义数组大小时,则自动根据数组内容进行初始化定义,arr4自定义大小为7,因为包括'/0'
return 0;
}
#include<stdio.h>
#include<strlen.h>
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%d\n",sizeof(arr1));//4
printf("%d\n",sizeof(arr2));//3
//sizeof计算arr1所占空间的大小
printf("%d\n",strlen(arr1));//3
//strlen 求字符串长度-'\0'之前的字符个数
printf("%d\n",strlen(arr2));//随机值
//arr2中没有'\0'所以是随机值
return 0;
}
//例
#include<stdio,h>
int main()
{
char arr[]="abcdef";//[a][b][c][d][e][f]
printf("%c\n",arr[3]);//'d'
return 0;
}
//例
#include<stdio.h>
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;
}
//结果如下:
&arr[0]= 00000003738FFB68
&arr[1]= 00000003738FFB6C
&arr[2]= 00000003738FFB70
&arr[3]= 00000003738FFB74
&arr[4]= 00000003738FFB78
&arr[5]= 00000003738FFB7C
&arr[6]= 00000003738FFB80
&arr[7]= 00000003738FFB84
&arr[8]= 00000003738FFB88
&arr[9]= 00000003738FFB8C
type_t arr_name [const_n] [const_n]
//类型 名称 行 列
#include<stdio.h>
int main()
{
int arr[3][4];
char arr[5][6];
return 0;
}
//注意二维数组括号内必须有数字,即行和列不能同时省略,且只有列未省略时,行才可省略
#include<stdio.h>
int main()
{
int arr[3][4] = {1,2,3,4,5};
//第一行为1234,第二行为5000,第三行为0000
int arr[3][4] = {{1,2,3},{4,5}};
//第一行为1230,第二行为4500,第三行为0000
return 0;
}
//锁定二维数组内容的位置
#include<stdio.h>
int main()
{
int arr[3][4]={1,2,3,4,5,6,7,8,9,10};
int i ;
int j ;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
//结果如下:
1 2 3 4
5 6 7 8
9 10 0 0
#include<stdio.h>
int main()
{
int arr[3][4]={1,2,3,4,5,6,7,8,9,10};
int i ;
int j ;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("&arr[%d][%d]= %p\n",i,j,&arr[i][j]);
}
}
return 0;
}
//结果如下:
&arr[0][0]= 00000003022FF648
&arr[0][1]= 00000003022FF64C
&arr[0][2]= 00000003022FF650
&arr[0][3]= 00000003022FF654
&arr[1][0]= 00000003022FF658
&arr[1][1]= 00000003022FF65C
&arr[1][2]= 00000003022FF660
&arr[1][3]= 00000003022FF664
&arr[2][0]= 00000003022FF668
&arr[2][1]= 00000003022FF66C
&arr[2][2]= 00000003022FF670
&arr[2][3]= 00000003022FF674
写代码时,会将数组作为参数传给函数。比如冒泡排序(将一个整型数组排序)
#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
int i,j;
//确定冒泡排序需要进行的次数
for(i=0;i<sz;i++)
{
int flag=1;
//每一次的冒泡排序
for(j=0;j<sz-1-i;j++)
{
if(arr[j]>arr[j+1])
{
int t = arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
flag=0;
}
}
if (flag==1)
break;
}
}
int main()
{
int arr[]={10,9,8,7,6,5,4,3,2,1};
int i;
int sz=sizeof(arr)/sizeof(arr[0]);
//对arr进行排序,排成升序
//arr时数组,对数组进行传参,实际传递过去的时数组arr首元素地址&arr[0]
bubble_sort(arr,sz);//冒泡排序函数
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5};
printf("%p\n",arr);
printf("%p\n",&arr);
printf("%d\n",*arr);
return 0;
}
//输出结果:
000000CE0814F958
000000CE0814F958
1
数组名是数组首元素地址(有俩例外)
1.sizeof(数组名) ——数组名表示整个数组。
2.&数组名,数组名代表整个数组。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。