小白求助
#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 = 29;
}
for (i = 0; i < sizeof(days) / sizeof(days); i++)
{
printf("%2d月份:%d天\n", i+1, days);
}
return 0;
}
i < sizeof(days) / sizeof(days) 这样的形式表达数组的长度,在实际开发中是很常见的技巧,这是什么意思啊? 知道了数组的长度,就知道了数组的边界在哪里呀 风过无痕1989 发表于 2020-11-2 14:09
知道了数组的长度,就知道了数组的边界在哪里呀
i < sizeof(days) / sizeof(days)
这个能详细解释一下吗? sizeof 函数不熟 吻你不厌 发表于 2020-11-2 14:16
i < sizeof(days) / sizeof(days)
这个能详细解释一下吗? sizeof 函数不熟
数组的 sizeof
数组的 sizeof 值等于数组所占用的内存字节数,如:
char a1[] = "abc";
int a2;
sizeof( a1 ); // 结果为4,字符末尾还存在一个NULL终止符
sizeof( a2 ); // 结果为3 * 4 = 12(依赖于 int)
把 sizeof 当作了求数组元素的个数,那是不对的,数组元素的个数应该怎么求呢?通常有下面两种写法:
int c1 = sizeof( a1 ) / sizeof( char ); // 总长度 / 单个元素的长度
int c2 = sizeof( a1 ) / sizeof( a1 ); // 总长度 / 第一个元素的长度 sizeof(days)是整个数组的大小
sizeof(days)是一个元素的大小
相除就是数组长度了,白话讲数组里面元素的个数
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
sizeof(days) 12*4=48,int类型占四个字节 ,这里的12 是让你看的明白48是怎么算出来的,实际上编译器是不知道12 的,只知道 数组总长度是 48
sizeof(days)第一个元素占用的字节因为是int 所以是 4 个字节, 4
sizeof(days) / sizeof(days)数组总长度 / 数组第一个元素的长度 48 / 4得出,数组里的元素个为 12 百度 风过无痕1989 发表于 2020-11-2 14:33
数组的 sizeof
数组的 sizeof 值等于数组所占用的内存字节数,如:
int c1 = sizeof( a1 ) / sizeof( char );
这里不应该是sizeof(int)吗? 吻你不厌 发表于 2020-11-2 19:23
int c1 = sizeof( a1 ) / sizeof( char );
这里不应该是sizeof(int)吗?
你有认真看过我的回答吗?我举的例子,你看清楚了吗? 吻你不厌 发表于 2020-11-2 19:23
int c1 = sizeof( a1 ) / sizeof( char );
这里不应该是sizeof(int)吗?
用 数据类型的话,你不觉得太单一了么,适用性也差,用数组名的话,你只需要记住这一个公式,不需要特地的了解数组是什么类型的,以后如果你给别人写接口的话,适用性也比较好 实习实习 知道了 水
页:
[1]