问答题
阅读以下说明和C语言代码,回答问题1至问题3,将解答填入对应栏内。 【说明】 在实时系统中,许多控制软件需要将数据封装到一个数据结构中,以节省存储空间。对于位操作,使用汇编语言实现其访问比较容易,但会增加编程难度,因此现在普遍采用C语言实现。使用高级语言编程要特别注意结构的存储格式以及编译器的特性。本题所使用的编泽器对变量按声明顺序分配地址。分析图4—1所示的C语言代码,回答以下问题。
问答题
如果处理机按16位以大端方式(big_endian)编址,请在图4-2所示的存储器图表中填入myRarData数据的存储内容(十六进制表示)。
问答题
在图4-1所示的程序中,第22行的语句执行完成后,下列语句的结果是多少?请将应填入(n)处的内容写在对应栏中。 q->X=(1) q->Y=(2) q->Z=(3) q->U=(4) 若再执行一次q++,则下列语句的结果又是多少?请将应填入(n)处的内容写在对应栏中。 q->X=(5) q->Y=(6) q->Z=(7) q->U=(8)
【正确答案】正确答案:(1)0x0001 (2)0x6162 (3)0x6300 (4)0x0200 (5)0x0002 (6)0x7879 (7)0x7A00 (8)0x0400
【答案解析】解析:本题主要考查考生对程序执行体的分析能力和指针变量的映射关系。通过两种不同结构类型的映射,检查考生是否掌握了各个字段的映射关系,推导出正确的数值。此外,考核考生是否了解类型指针加一后,不是简单的空间地址加一,而是要将整个结构数据项加一。这一点是高级语言必须具备的基础。
问答题
内存空间常划分为代码段(text)、数据段(data)、bss段(bss)、堆区(heap)和栈区(stack),那么图4-1中myRadarData数组的存储空间应分配在哪个段中?指针变量p、 Q应分配在哪个段中?
【正确答案】正确答案:(1)myRadarData数组的存储空间应分配在数据段(data)。 (2)指针变量p、q应分配在栈区(stack)。
.jpg)
【答案解析】解析:本题主要考查考生是否掌握不同作用域的变量,其分配的地址空间的不同,从而深入理解代码段(text)、数据段(data)、bss段(bss)、堆区(heap)和栈区(stack)的具体含义。由于在所有过程(或函数)都能访问到全局变量,所以应在数据段中分配空间,在程序被加载到内存时,全局变量的存储空间及初值即被存储在数据段中;由于局部变量的作用域为过程(或函数)内,一旦程序退出过程体,局部变量将失效,因此,局部变量被分配在栈区。掌握变量的作用域范围,在程序中适当使用全局变量,可减少代码运行空间。