1、数组的创建
2、数组的初始化
int arr[10] = { 1, 2, 3, 4, 5 };
int arr2[4] = { 3, 4, 5, 6 };
3、数组的使用
#include<stdio.h>
int main()
{
int i = 0;
int arr[10] = {0};
for (i= 0; i < 10; i++)
{
arr[i] = i;
}
for (i = 0; i < 10; ++i)
{
printf("%d", arr[i]);
}
getchar();
return 0;
}
4、数组的大小
sz=sizeof(arr)/sizeof(arr[0])
5、数组的运算
- {
- int a[] = { 1,2,3,4};
- printf("%d\n", sizeof(a)); //16 a在这里是代表整个数组
- printf("%d\n", sizeof(a+0)); //4 a在这里代表首元素地址
- printf("%d\n", sizeof(*a)); //4 a在这里代表首元素地址,对地址解引用为首元素本身
- printf("%d\n", sizeof(a+1)); //4 首元素地址向右移一位
- printf("%d\n", sizeof(a[1]));//4 a【1】是第二个元素
- printf("%d\n", sizeof(&a)); //4 a代表整个数组
- printf("%d\n", sizeof(*&a)); //16 a代表整个数组,对整个数组取地址后解引用,为数组本身
- printf("%d\n", sizeof(&a+1));//4 跳过a后产生的地址,地址为四个字节
- printf("%d\n", sizeof(&a[0]));//4
- printf("%d\n", sizeof(&a[0]+1));//4
- system("pause");
- return 0;
- }
6、字符数组
-
- char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
- printf("%d\n", sizeof(arr)); //6
- printf("%d\n", sizeof(arr+0));//4 arr代表首元素地址,地址为4个字节
- printf("%d\n", sizeof(*arr)); //1 arr代表首元素地址,解引用后为首元素本身
- 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
- printf("%d\n", strlen(arr)); //x 随机值,因为strlen查找到\0结束
- printf("%d\n", strlen(arr+0)); //x
- printf("%d\n", strlen(*arr)); //error 对arr解引用为arr第一个元素‘a’,产生错误
- printf("%d\n", strlen(arr[1]));//error
- printf("%d\n", strlen(&arr)); //x
- printf("%d\n", strlen(&arr+1));//x
- printf("%d\n", strlen(&arr[0]+1));//x
-
- char *p = "abcdef";
- printf("%d\n", sizeof(p)); //4 p为指针变量,4个字节
- printf("%d\n", sizeof(p+0));//4 p代表首元素地址,地址为4个字节
- printf("%d\n", sizeof(*p)); //1 p代表首元素地址,解引用后为首元素本身
- printf("%d\n", sizeof(p[1]));//1
- printf("%d\n", sizeof(&p)); //4
- printf("%d\n", sizeof(&p+1));//4
- printf("%d\n", sizeof(&p[0]+1));//4
- printf("%d\n", strlen(p)); //6
- printf("%d\n", strlen(p+0)); //6 从首元素开始查找
- //printf("%d\n", strlen(*p)); //error
- //printf("%d\n", strlen(p[1]));//error
- printf("%d\n", strlen(&p)); //x
- printf("%d\n", strlen(&p+1));//x
- printf("%d\n", strlen(&p[0]+1));//5 首元素向右移一个元素,从第二个元素开始查找</span>
- int a[3][4] = { 0 };
- printf("%d\n", sizeof(a)); //48 整个数组的大小
- printf("%d\n", sizeof(a[0][0])); //4 首元素地址
- printf("%d\n", sizeof(a[0])); //16 第一行,a[0]表示数组名,a[0]整个数组的大小
- printf("%d\n", sizeof(a[0]+1)); //4
- printf("%d\n", sizeof(a+1)); //4 地址
- printf("%d\n", sizeof(&a+1)); //4 地址
- printf("%d\n", sizeof(&a[0]+1)); //4
- printf("%d\n", sizeof(*a)); //16 第一行地址解引用
- printf("%d\n", sizeof(a[3])); //16 第四行,不参与运算
- printf("%d\n", sizeof(*&a)); //48</span>
总结:数组名代表整个数组的时候只有两种情况:
sizeof(数组名),&数组名