一、数组的定义。
一维数组的定义&初始化:
int arr1[5] = {
1,2,3};//整型数组的不完全初始化,后补0;数组一共开辟5个单位。
int arr2[] = {
1,2,3,4};//数组一共开辟4个单位。
char arr4[5] = {
'a',98, 'c'};//字符数组的不完全初始化,后补'\0';数组一共开辟5个单位。
char arr5[] = {
'a','b','c'};//数组一共开辟3个单位。
char arr6[] = "abcdef";`//数组一共开辟7个单位,末尾会自动增加一个字符'\0'。
二维数组的定义&初始化:
int arr[3][4] = {
1,2,3,4};//3行4列。
/*1 2 3 4
0 0 0 0
0 0 0 0
*/
int arr[3][4] = {
{
1,2},{
4,5}};//3行4列。
/*1 2 0 0
4 5 0 0
0 0 0 0
*/
int arr[][4] = {
{
2,3},{
4,5}};//2行4列。(行号可以省略,列号不能省)
/*2 3 0 0
4 5 0 0
*/
二、数组名不是数组首元素的地址的两种情况。
1.sizeof(数组名)。
int arr[6] = {
'a','b','c','d' };
printf("%d",sizeof(arr));//打印24。数组占用了24Byte。
//sizeof()输出的单位是字节。
2. &数组名
int arr[] = {
1,2,3,4,5 };
printf("%p\n", arr);//代表首元素arr[0]地址
printf("%p\n", arr+1); //代表arr[1]地址,以元素为单位增加
printf("%p\n", &arr[0]);//代表首元素arr[0]地址
printf("%p\n", &arr[0]+1);//代表arr[1]地址,以元素为单位增加
printf("%p\n", &arr);//代表arr数组的地址
printf("%p\n", &arr+1);//以整个数组为单位增加