数组的完全初始化 --将数组中的元素一一列举出来eg:arr[]={1,2,3,4,5,6,7,8,9,10}
创建数组的同时给数组一些值的初始化
eg:
int arr2[10] = { 1,2,3 };//不完全初始化,剩余的元素默认初始化为0
// int arr3[] = { 1,2,3,4,5,6,7,8,9,10 }//这里没有指定的数组个数。编译器会根据初始化的内容来确定数组的元素个数
// int arr4[] = { 1,2,3 }//3个元素
// int arr5[10] = { 1,2,3 }//10个元素
// return 0;
char arr6[] = "abc";//a b c \0
// char arr7[] = { 'a','b','c' };//a b c 随机直到\0
// printf("%s\n",arr6);
// printf("%s\n",arr7);
// return 0;
//}
//1.数组是有下标的,下标是从0开始的2.[]—_下标访问操作符
//int main()
//{
// int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
// //按照顺序打印数据
// int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
// int i = 0;
// int* p = &arr[0];
// for (i = 0; i < sz; i++)
// {
// //printf("&arr[%d] = %p\n", i, &arr[i]);
// printf("%p --- %p\n", p + 1, &arr[i]);
// }
// return 0;
//}
//结论:1.一维数组在内存中是连续存放的 2.随着数组下标的增长,地址是由低到高变化的
//
// {
// printf("%d ", arr[i]);//通过下标访问数组每个元素
// }
// printf("\n");
// //倒序打印
// for (i = sz-1; i >= 0; i-- )
// {
// printf("%d ", arr[i]);
// }
// printf("\n");
// for (i = 0; i < sz - 1; i += 2)
// {
// printf("%d ", arr[i]);
// }
// printf("\n");
// return 0;
//}
//总结:1.数组是使用下标来访问的,下标从0开始;2.数组的大小可以通过计算得到
//二维数组:
//int main()
//{
// int arr1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
// int arr2[3][4] = { 1,2,3,4,5};
// int arr3[3][4] = { {1,2},{3,4},{5,6} };
// //二维数组如果有初始化,行可以省略,列不能省略-行和列下标都是从0开始的
// int arr4[][2] = { 1,2,3,4,5,6,7,8,9 };
// int i = 0;
// for (i = 0; i < 5; i++)
// {
// int j = 0;
// for (j = 0; j < 2; j++)
// {
// printf("%d ", arr4[i][j]);
// }
// printf("\n");
// }
// return 0;
//}
//二维数组的存储
//int main()
//{
// int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
// int i = 0;
// for (i = 0; i < 3; i++)//i<sizeof(arr)/sizeof(arr[0]);-整个数组大小/一行大小=行数
// {
// int j = 0;
// for (j = 0; j < 4; j++)//i<sizeof(arr[0]/sizeof(arr[0][0])-一行大小/一个元素大小
// {
// //1.printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
// printf("%d ", arr[i][j]);
// //每次相差4-即四个字节-也是连续存放
// }
// }
// printf("\n");
// int* p = &arr[0][0];//整形指针
// int k = 0;
// for (k = 0; k < 12; k++)
// {
// printf("%d ", *(p + k));
// }
//
// return 0;
//}
//数组越界
// zuoye
//int main()
//{
/*int arr[] = { 1,2,(3,4),5 };
printf("%d\n", sizeof(arr));*/
/*char str[] = "hello bit";
printf("%d %d\n", sizeof(str), strlen(str));
return 0;
}*/
/*int arra[] = { 1,2,3 };
int arrb[] = { 4,5,6 };
int tmp = 0;
arra[] = tmp;
tmp =arrb[];
arrb[] =arra;
printf("%d\n", arra, arrb);
return 0;*/
//}
//#include <stdio.h>
//
//int main()
//
//{
// int i, j, k;
//
// int A[10];
//
// int B[10];
//
// int C[10];
//
// printf("请输入A数组的内容:\n");
//
// for (i = 0; i < 10; i++)
//
// {
// scanf_s("%d", &A[i]);
// }
//
// printf("请输入B数组的内容:\n");
//
// for (j = 0; j < 10; j++)
//
// {
// scanf("%d", &B[j]);
// }
//
// for (k = 0; k < 10; k++)
//
// {
// swap(&A[k], &B[k]); // 调用指针函数进行元素的交换
//
// }
//
//
//printf("互换后的A数组为:\n");
//
// for (i = 0; i < 10; i++)
//
// {
// printf("%d ", A[i]);
// }
//
// printf("\n");
//
// printf("互换后的B数组为:\n");
//
// for (j = 0; j < 10; j++)
//
// {
// printf("%d ", B[j]);
// }
//
// printf("\n");
//
// return 0;
//
//}
//
//
//
//int swap(int* a, int* b)
//{
// int t;
//
// t = *a;
//
// *a = *b;
//
// *b = t;
//
//}