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

2025-01-11 19:23:24
推荐回答(4个)
回答1:

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的人,建议不要考虑问题二里面提到的问题,因为考试里面绝对不会考虑到这些的,你如果写了肯定就算你错。而且容易让你搞混

回答2:

1、每个元素是独立的,其地址依序排列。每个元素的取值可以相同。该值赋给了数组的第6个元素。

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

3、不是。是向debts[4]这个变量所在的地址写入数据,也即给debts[4]赋值。

回答3:

不对的
float A[20]相当于是定义了float A[0],A[1],A[2],......A[19]就完了 没有A[20] 也就更没有A[33]了 每一个数组下标都是从0开始 到N-1结束
那么debtS[4]就是第五个元素
懂了吗

回答4:

坐等高手