目录
1.一维数组
1.1数组的创建
char arr[10];
float arr1[2];
double arr2[30];
1.2数组的初始化
char arr[] = "abc";
char arr1[3] = {'a','b','c'};
char *p = "abcd";
1.3用指针访问数组
- 数组在内存中是
连续存放
的; - 数组名相当于数组首元素的地址;&arr[ i ]等价于arr + i;
- 用指针访问时,p存的首元素地址,
*p
指向首元素,*(p+i)
依次指向数组元素
int main()
{
int arr[] = {1,2,3,4,5};
int *p = arr;
int i = 0;
for(i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d", arr[i]);
}
printf("\n");
for(i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d", *(p+i));
}
system("pause");
return 0;
}
2.二维数组
2.1二维数组的创建
int arr[2][4];
char arr1[3][4];
float arr2[2][3];
2.2二维数组的初始化
int arr[3][4] = {1,2,3,4,5};
int arr[3][4] = {(1,2),(2,4,5)};
int arr[][4] = {(1,2),(3),(4,5)};
2.3指针访问二维数组
- 二维数组在内存中也是连续存放的;
- 二维数组的数组名表示第一行元素的地址;
int main()
{
int arr[3][4] = {0};
int *p = &arr[0][0];
int i = 0;
for(i = 0; i < 3*4; i++)
{
*(p+i) = i;
}
for(i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
int j = 0;
for(j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]); j++)
{
printf("%d", arr[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
3.有关数组的运算
- 对于sizeof( )——sizeof(数组名)中数组名相当于整个数组的大小,单位是字节;
- &数组名 —— 取址,取出数组的地址;
- strlen 遇到’ \0 ‘才停下,通过地址挨着往后数个数
- 一维数组
int a[] = {1,2,3,4};
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a+0));
printf("%d\n", sizeof(*a));
printf("%d\n", sizeof(a+1));
printf("%d\n", sizeof(&a));
printf("%d\n", sizeof(*&a));
printf("%d\n", sizeof(&a+1));
char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));
char arr[] = "abcdef";
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));
char *p = "abcdef";
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(p+1));
printf("%d\n", sizeof(*p));
printf("%d\n", sizeof(p[0]));
printf("%d\n", sizeof(&p));
printf("%d\n", sizeof(&p+1));
printf("%d\n", sizeof(&p[0]+1));
printf("%d\n", strlen(p));
printf("%d\n", strlen(p+1));
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));
int a[3][4] = {0};
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a[0][0]));
printf("%d\n", sizeof(a[0]));
printf("%d\n", sizeof(a[0]+1));
printf("%d\n", sizeof(a+1));
printf("%d\n", sizeof(&a[0]+1));
printf("%d\n", sizeof(*a));
printf("%d\n", sizeof(a[3]));