请问第十六行的循环条件要怎么理解呢?有点不理解

#include <stdio.h>

int main()
{
        int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int i, year;

        printf("请输入一个年份:");
        scanf("%d", &year);

        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
        {
                days[1] = 29;
        }

        for (i = 0; i < sizeof(days) / sizeof(days[0]); i++)
        {
                printf("%2d月份:%d天\n", i+1, days[i]);
        }


        return 0;
}

1,sizeof()函数用来求目标的所占空间大小,所以sizeof(days),求的是DAYS这个数组的大小,一个int占4字节,共有12个元素,所以是48个字节。
sizeof(days【0】),求的是该数组中一个元素的大小,一个int占用4个字节。二者相除得到的即是数组的元素个数,sizeof(days)/sizeof(days【0】),一般用在不知道数组元素个数的时候计算元素个数。

#include <stdio.h>

int main()
{
   int a[10]={1,2,3};
   printf("数组所占空间大小为%d字节\r\n",sizeof(a));
   printf("数组单个元素所占空间大小为%d字节\r\n",sizeof(a[0]));
}

输出结果:

img

因为c语言里没有直接提供length参数,无法直接获取数组长度
sizeof(days)获取到的是数组占用的内存
sizeof(days[0])获取到的是第一项占用的内存
做个除法就是数组长度了