新手求教关于C语言的问题

关于数组1.如以下声明:floatdebts[20];这是表示具有20个元素的数组,那么这每个元素是不同的是吧?可以相同么?那么debts[5]=32.54;这个语句中3... 关于数组
1. 如以下声明:float debts[20]; 这是表示具有20个元素的数组,那么这每个元素是不同的是吧?可以相同么?那么debts[5]=32.54;这个语句中32.54是赋给了谁啊?
2. 为什么debts[20]=88.32; 还有debts[33]=828.12;是错误代码?它们跟上面debts[5]=32.54有什么区别么?
3. scanf("%f",&debts[4]); 这是为第5个元素读入一个值。是不是说对于debts[4]这个只有4个元素的数组增加一个元素?
谢谢大家~
展开
 我来答
zaoyuchang
2011-08-20 · TA获得超过126个赞
知道小有建树答主
回答量:150
采纳率:66%
帮助的人:50.2万
展开全部
debts[20] 你首先要理解他是在栈里面申请了20个浮点类型长度的空间,然后指定空间里面的数值代表的是浮点数,也就是说从起始开始32位*20的空间都是他所占的内存。
然后看你的问题。
1、二十个元素可以一样也可以不一样,它只是表示一段空间,你可以强制转换成其他类型,不过目前你还不需要理解这些东西。就像我说的debts[5]相当于从数组开头的那个地址开始数到底6个32位的地方(0-5)然后往那个地址里面写入32.54的二进制码。也就是付给你所申请的二十个元素中的第6个元素
2、就合开头的说法一样,其实debts[20]算错也不算错,从数组意义上来说他超出了申请范围,所以是错的,但是从计算机而言,它相当于代表了从数组开始按浮点32位计算第21个内存空间中的数值,同理33也是,所以他们都是对的,你可以手动给他们写数值。
3、相当于队第五个元素做覆盖动作,和4完全没有关系。相当于你一幢20层楼的房子,5楼住了一户人家,关你四楼什么事情。

从你的问题看,应该确实是刚开始学C的人,建议不要考虑问题二里面提到的问题,因为考试里面绝对不会考虑到这些的,你如果写了肯定就算你错。而且容易让你搞混
万条拙手
2011-08-21
知道答主
回答量:45
采纳率:0%
帮助的人:20.8万
展开全部
1、每个元素是独立的,其地址依序排列。每个元素的取值可以相同。该值赋给了数组的第6个元素。

2、声明debts[20]意味着这个数组只有20个元素,[20]是第21个元素,[33]是第34个元素,访问不存在的元素当然会报错。

3、不是。是向debts[4]这个变量所在的地址写入数据,也即给debts[4]赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木琼玥4
2011-08-20 · TA获得超过299个赞
知道答主
回答量:79
采纳率:0%
帮助的人:46.1万
展开全部
不对的
float A[20]相当于是定义了float A[0],A[1],A[2],......A[19]就完了 没有A[20] 也就更没有A[33]了 每一个数组下标都是从0开始 到N-1结束
那么debtS[4]就是第五个元素
懂了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackove
2011-08-20
知道答主
回答量:4
采纳率:0%
帮助的人:3.4万
展开全部
坐等高手
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式