|
|
检测点8-13
1.常量表达式sizeof 0、2 + 3和'0' + 1的类型分别是什么?为什么?
答:
sizeof 0的类型是size_t,因为sizeof运算符的结果就是size_t类型的。
2 + 3的类型是int,因为这是两个int类型的数字相加;
'0' + 1的类型也是int,因为这也是两个int类型的数字相加。
2.将源文件c0815.c中的数组b改成变长数组,数组的元素数量和每个元素的值都来自用户输入。该程序的其他功能不变。
参考答案:
# include <stdio.h>
# include <stddef.h>
int sum_ints (size_t len, int (* pa) [len])
{
int sum = 0;
for (size_t x = 0; x < sizeof * pa / sizeof (* pa) [0]; x ++)
sum += (* pa) [x];
return sum;
}
int main (void)
{
int a [] = {5, 6, 7, 8, 9,};
printf ("%d\n", sum_ints (sizeof a / sizeof a [0], & a)); //S1
int len;
printf ("Number of elements:");
scanf ("%d", & len);
int b [len];
printf ("Input %d numbers:", len);
for (int x = 0; x < len; x ++)
scanf ("%d", & b [x]);
printf ("%d\n", sum_ints (sizeof b / sizeof b [0], & b)); //S2
}
|
|