1.int arr[必须为常量,不可以为变量]
数组的初始化
int arr1[10] = { 1,2,3 };//属于不完全初始化,剩下的元素默认初始化为01 2 3 0 0 0 0 0 0 0
char arr2[5] = { 'a',98 };/{'a','b'}//两种表示结果相同,属于不完全初始化a b 0 0 0
char arr3[5] = "ab";//a b \0 0 0
char arr4[] = "abcdef";//由所给决定a b c d e f \0
2.#include<stdio.h>
#include<string.h>
//int main()
//{
// char arr[] = "abcdef";
// printf("%d\n", sizeof(arr));//7
// //sizeof计算arr所占空间大小
// //7个元素-char 7*1=7
//
// printf("%d\n", strlen(arr));//6
// //strlen求字符串的长度-'\0'之前的字符个数
// return 0;
//}
3.区别strlen与sizeof
//1.strlen与sizeof没有什么关联
//2.strlen是求字符串长度的,只能针对字符串求长度-库函数-使用得引头文件
//3.sizeof计算变量,数组,类型的大小-单位是字节-操作符
4.int main()
//{
// char arr1[] = "abc";//有\0作为结束标志
// char arr2[] = { 'a','b','c' };//没有\0作为结束标志
// printf("%d\n", sizeof(arr1));//4
// printf("%d\n", sizeof(arr2));//3
// printf("%d\n", strlen(arr1));//3
// printf("%d\n", strlen(arr2));//随机值strlen无法找到\0
// return 0;
5.一维数组的使用
//int main()
//{
// char arr[] = "abcdef";
// int i = 0;
// int len = strlen(arr);
// for (i = 0; i <len; i++)
// {
// printf("%c ", arr[i]);//数组是使用下标来访问的,下标从0开始
// }
// return 0;
//}
//数组大小可通过计算得到
//即int sz=sizeof(arr)/sizeof(arr[0]);//数组大小除以元素大小
6.一维数组在程序中的存储
//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;
//}
//综上所述:一维数组在内存中是连续存放的,每个占据4个字节
//同时随着数组下标的增长,元素的地址也有内在的规律,由低地址到高地址存储
//二维数组的创建与初始化
int main()
{
// int arr[3][4] = {{1,2,3},{4, 5}};//三行四列
// char ch [5][6]; //同时可通过加小括号进行分组,分行!!!
//int arr[] = { 1,2,3,4 };
int arr[3][4] = { {1,2,3},{4,5,6,7},8 };//二维数组初始化时,行可以省去,列不可省去
//同时二维数组中行列均从0开始
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
// printf("%d ", arr[i][j]);//打印数组内的数
printf("&arr[%d][%d]=%p\n", i, j, &arr[i][j]);//打印二维数组的地址
} //二维数组存储时也为连续存储
printf("\n"); // 可以把二维数组当成多个一维数组,按行为标准
} //与一维数组类似!!!
return 0;
}