全部科目 > 嵌入式系统设计师 >
2020年下半年 上午试卷 综合知识
第 65 题
知识点 结构体   通过指针访问数组元素  
章/节 嵌入式系统程序设计  
 
 
以下C语言程序的输出结果是(65)。
 
  A.  10
 
  B.  11
 
  C.  20
 
  D.  21
 
 




 
 
相关试题     结构体、位域和共用体 

  第60题    2015年下半年  
变量W_data定义如下:

则变量W_data所占的内存存储空间可表示为(60)。

  第40题    2017年下半年  
下列关于C语言中结构类型的叙述中,错误的是(40)。

  第43题    2019年下半年  
某计算机存储器按字节编址,采用小端方式存放数据,假定编译器规定int型和short型长度分别为32位和16位,并且数据按双字节对齐存储。某C语言程序段如下。

相关试题     指针与数组 

  第62题    2016年下半年  
以下C语言程序的输出结果是(62)。

  第62题    2017年下半年  
已知:char str[10], *p=str;下面C语言语句中正确的是(62)。

 
知识点讲解
· 结构体
· 通过指针访问数组元素
 
        结构体
        利用结构体类型可以把一个数据元素的各个不同的数据项聚合为一个整体。结构体类型的声明格式为:
        
        例如,一个复数z=x+yi包含了实部x和虚部y两部分(x和y为实数),可以定义一个表示复数的结构体类型,并用typedef为结构体类型命名为Complex:
        
        在该定义中,Complex是这个结构体类型的名字,re和im是结构的成员。一般情况下,对结构体变量的运算必须通过对其成员进行运算来完成,成员运算符“.”用来访问结构体变量的成员,方式为:
        
        例如,定义结构体变量z,将-4和5分别赋值给一个复数z的实部成员变量和虚部成员变量:
        
        z.re和z.im相当于普通的double型变量。结构体外的变量名和结构体中的成员名相同时不会发生冲突。一个结构体变量的存储空间长度不少于其所有成员所占空间长度之和。
        结构体数据的空间中可能产生填充信息,因为对大多数处理器而言,访问按字或者半字对齐的数据速度更快,当定义结构体时,编译器为了性能优化,可能会将它们按照半字或字对齐。
        例如,下面两个结构体变量structA和structB的成员相同但排列顺序不同,用sizeof计算其所占用存储空间的字节数,sizeof(structA)的值为8,sizeof(structB)的值为12。其存储空间中的填充处理如下图所示。
        
        结构体变量的存储空间
 
        通过指针访问数组元素
        在C程序中,常利用指针访问数组元素,数组名表示数组在内存中的首地址,即数组中第一个元素的地址。可以通过下标访问数组元素,也可以通过指针访问数组元素。
        例如:
        
        数组arr的元素可以用*ptr、*(ptr+1)、*(ptr+2)、*(ptr+3)来引用。
        数组名是常量指针,数组名的值不能改变,因此arr++是错误的,而ptr++是允许的。例如,下面的代码通过修改指针ptr来访问数组中的每个元素。
        
        一般情况下,一个int型变量占用4个字节的内存空间,一个char型变量占用一个字节的空间,所以str是字符指针的话,str++就使str指向下一个字符;而整型指针ptr++则使ptr指向下一个int型整数,即指向数组的第二个元素。
        可以用指针访问二维数组元素。例如,对于一个m行、n列的二维整型数组,其定义为
        
        由于二维数组元素在内存中是以线性序列方式存储的,且按行存放,所以用指针访问二维数组的关键是如何计算出某个二维数组元素在内存中的地址。二维数组a的元素a[i][j](ii][j]之前的元素所占空间形成的偏移量,概念上表示为a+(i×n+j)*sizeof(int),在程序中需要表示为(&a[0][0]+i×n+j)。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有