问下关于c语言中数组的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 23:46:12
做到几个题目,不明白,希望高手回答下
1: int b[8]={2,3,4};问数组b在内存中所占字节数,答案是16
后来做到另一道题目:char str[10]="language",问str所占字节数,答案是9
不明白为什么一个是按[8]算的,而另外一个是按实际算的?
2: #include<stdio.h>
void main(){int a[10],i=0;while(i<10) scanf(%d",( ));...}
问在()应填入什么是给数组所有元素输入数据,答案是&a[++i],如果是这个答案,那么a[0]不就没输入了? 而选择中没有&a[i++]这个选项
3: 若定义数组并初始化 char a[10]={'0','2','3','4','5','6','7','8','9'}
选择正确语句,答案是D: printf("%s",a),这个我认为是对的,不过还有另外一选项C:printf(%c",a[3]),为什么这个是错的啊?
希望高手帮忙解释下,谢谢

1,因为两者算法不一样。对于char str[10]="language",用sizeof的话,结果还是10,用strlen的话,是9。

2,估计你的书是盗版的,哈哈。你的想法是对的

3,printf(%c",a[3]),%c前面少了",哈哈。

1.int b[8]定义一个数组,元素个数为8,通常机器中一个int型变量占用两个字节,所以b总共占用16个字节
char str[10]="language";
定义一个数组,最大元素个数为10,一个char类型变量占用1个字节.
"language"有8个字符加上结束符'\0',后面还有'\0',当取str大小时,遇到第一个'\0'就结束,所以得到的大小为9
2.scanf("%d",&a[i++]);//我不知道怎么没那个答案,我认为你说 的是正确的.
3.没问题
//当不知道的时候,写个程序试试就知道了撒.不用来问的哦.

1因为用sizeof和strlen的两者算法不一样。
2不知道,估计答案错了,
3估计应该是printf("%c",&a[3]);