主题作业三:函数和结构.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主题作业三:函数与结构 数组变量名也是指针 访问结构指针所指向的结构的成员变量时用-, 访问结构的成员变量时用. 成员s是数组,不能直接赋值(但是初始化数组的时候可以,例如char s[10]=”abc”; 那是由编译器在编译阶段完成的) 一.单选题 针对如下定义,合法的表达式是__C___。 struct node { char s[10]; int k; } p[5]; A.p.k=2B.p[0]-k=2 C.(p-s)[0]=‘a’p[0].s=“a”p指向a[1];然后p+1指向a[2],即元素9的位置; 然后(int*)(p+1)则是将指针强制转换为一个整数指针,位置不动,还是9的位置; +2操作则把上面的整数指针向后移动2个,即指向11的位置; 针对如下定义: static struct { int x, y[3]; } a[3] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p; p = a+1; 表达式*((int *)(p+1)+2)的值为__D___。 A.3B.7C.1011-的优先级高于++,该表达式等价于++(p-str) 所以,++作用于p的成员变量str上。 执行后的结果是:指针p不变,但是它指向的结构的成员str加1 对于以下结构定义,++p-str中的++加在__A___。 struct { int len; char *str; } *p; A、指针str上 B、指针p上 C、str指的内容上 D、以上均不是 根据声明int (*p)[10], p是一个__A___。 A.指针B.数组C.函数D.数组元素第4题解答:注意:int (*p)[10] 和 int *p[10]是完全不一样的 int *p[10]定义了一个数组,其元素类型为int*;此时sizeof(p)为40。 int (*p)[10]定义了一个指针,其类型是长度为10的整型数组;此时sizeof(p)为4。 若下面程序中所有的变量均已声明或定义,则下列选项中的变量能够在fun()中使用的是__A___。 #include stdio.h void fun(int x) { static int y; 变量遵循先声明再引用的原则 x作为函数fun的形式参数变量,已经声明为int型,可以使用 y是函数fun的局部静态变量,也已经声明,也可以使用 z 在fun之后定义,之前没有声明,不能使用 a,b则是函数main的局部变量,fun不能使用。 注意:这里的先后顺序只得是编译器编译语句的顺序,不是语句运行的先后顺序。因为if/switch分支、for/while循环等流程控制语句可能动态的控制程序语句的执行次序,所以语句的执行次序不是固定的。 …… return; } int z; void main( ) { int a,b; fun(a); …… } A.x, yB.x, y, zC. a,b,y,zD.a,b,x,y,z 填空题 对于下面的定义,(s[0].b)/(++p)-a的值为__0___。 s[0] 为{2,4},s[1] 为{6,8}。 s[0].b为4 p初始指向s[0],++p指向s[1],故(++p)-a的值为6 因为4/6为0,所以。。。。 struct { int a; int b; } s[2]={2,4,6,8}, *p=s; 结构数组a[3]在内存中也可以看做是一个长度为12的整数数组:1,2,3,…, 11,12。 p的初始地址为a+3,那么p-1指向a[2],即元素9的位置 (int*)将p-1强制转换为一个整型指针,但是还是指向9的位置。所以-1作用在整型指针(int*)(p-1)上,得到9的前面一个整数元素的地址,即8的地址。 下列程序段执行后,z的值是 _8_。 static struct { int x, y[3]; } a[3] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p=a+3; int z; z=*((int *)(p-1)-1); 下列代码段将会打印出__COND___。 c是一个指针数组,c[0]指向字符串”FIRST”,c[1]指向字符串“SECOND”,c[2]指向字符床“THIRD”。 *(c+1)为c[1],所以i*(c+1)+2指向字符SECOND中的C. char *c[3]={“FIRST”, “SECOND”, “THIRD”}; printf(“%s”, *(c+1)+2); 参考第8题的解释 下列程序段的输出结果是_fgh

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档