一:一维数组
定义:数组是一组相同类型元素的集合
数组的创建方式:type_t arr_name [ const_n]
type_t是指数组的元素类型
const_n是一个常量表达式,用来指定数组的大小
例如:int arr[10];
注意:数组的创建,[ ]中要一个常量才可以,不能使用变量;
数组的初始化:数组的初始化是指在创建数组的时候给数组的内容一些合理的初始值
例如:
int arr1[10]={1,2,3};
int arr2[ ]={'a','b','c'};
int arr3[ ]="abcd";
注意:1,数组是使用下标来访问的,下标是从0开始的;
2,数组的大小可以通过计算得到;
3,数组在内存重视连续储存的。
例如:int arr[10];
int sz=sizeof(arr0/sizeof(arr[0]);/
二:二维数组
(1) 二维数组的使用也是通过下标的方式;
(2)二维数组在内存中也是连续储存的。
关于数组我们必须学会有关数组的一些运算。
例如:
一维数组:
int a[] = {1,2,3,4};
{
printf("%d\n",sizeof(a)); 16
printf("%d\n",sizeof(a+0)); 4
printf("%d\n",sizeof(*a)); 4
//*a == *(a+0) == a[0];
//arr[i] ==> *(arr+i)
printf("%d\n",sizeof(a+1)); 4
printf("%d\n",sizeof(a[1])); 4
printf("%d\n",sizeof(&a)); 4
printf("%d\n",sizeof(*&a)); 16
printf("%d\n",sizeof(&a+1)); 4
printf("%d\n",sizeof(&a[0])); 4
printf("%d\n",sizeof(&a[0]+1)); 4
字符数组:
char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", strlen(arr)); 随机值
printf("%d\n", strlen(arr+0)); 随机值
printf("%d\n", strlen(*arr)); 错误
printf("%d\n", strlen(arr[1])); 错误
printf("%d\n", strlen(&arr)); 随机值
printf("%d\n", strlen(&arr+1)); 随机值
printf("%d\n", strlen(&arr[0]+1)); 随机值
printf("%d\n", sizeof(arr)); 6
printf("%d\n", sizeof(arr+0)); 4
printf("%d\n", sizeof(*arr)); 1
printf("%d\n", sizeof(arr[1])); 1
printf("%d\n", sizeof(&arr)); 4
printf("%d\n", sizeof(&arr+1)); 4
printf("%d\n", sizeof(&arr[0]+1)); 4
char arr[] = "abcdef"; 7
printf("%d\n", strlen(arr)); 6
printf("%d\n", strlen(arr+0)); 6
printf("%d\n", strlen(*arr)); 错误
printf("%d\n", strlen(arr[1])); 错误
printf("%d\n", strlen(&arr)); 6
printf("%d\n", strlen(&arr+1)); 随机值
printf("%d\n", strlen(&arr[0]+1)); 5
printf("%d\n", sizeof(arr));//7
printf("%d\n", sizeof(arr+0));//4
printf("%d\n", sizeof(*arr));//1
printf("%d\n", sizeof(arr[1]));//1
printf("%d\n", sizeof(&arr));//4
printf("%d\n", sizeof(&arr+1));//4
printf("%d\n", sizeof(&arr[0]+1));
char *p = "abcdef";
printf("%d\n", strlen(p)); 6
printf("%d\n", strlen(p+1)); 5
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)); 5
二维数组:
int arr[3][4];
*(*(arr+1)+0)
*(*(arr)) = *(*(arr+0)+0)
*arr = *(arr+0)
printf("%d\n", sizeof(p)); 4
printf("%d\n", sizeof(p+1)); 4
printf("%d\n", sizeof(*p)); 1
printf("%d\n", sizeof(p[0])); 1
printf("%d\n", sizeof(&p)); 4
printf("%d\n", sizeof(&p+1)); 4
printf("%d\n", sizeof(&p[0]+1)); 4
int a[3][4] = {0};
int *p = a+1;
short s = 1;
int n = 10;
printf("%d\n", sizeof(s=n+1)); 2;
printf("%d\n",sizeof(a)); 48
printf("%d\n",sizeof(a[0][0])); 4
printf("%d\n",sizeof(a[0])); 16
printf("%d\n",sizeof(a[0]+1)); 4
printf("%d\n",sizeof(a+1)); 4
printf("%d\n",sizeof(&a[0]+1)); 4
printf("%d\n",sizeof(*a)); 16
return 0;
}