指针典型例题分析与解答.docxVIP

  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文档。上传文档
查看更多
指针典型例题分析与解答

指针典型例题分析与解答1 对于变量x,其地址可以写成________;对于数组y[10],其首地址可以写成________或__________;对于数组元素y[3],其地址可以写成__________或_________。【分析】变量的地址可以写成“&变量名”。数组的首地址就是数组名,也可以写成第 1个元素的地址“&数组名[0]”。数组元素的地址可以写成“&数组元素”,也可以写成“数组首地址十下标”。【 答案】 &x? ?? ?? ? y? ?? ?? ?&y[0]? ?? ?? ?&y[3]? ?? ?? ?y+32 设有定义语句“int k,*p1=&k,*p2;”,能完成表达式“p2=&k”功能的表达式可以写成_______________。【分析】注意原来表达式“p2=&k”的主要功能是将变量k的地址存放到指针变量p2中。现在变量k的地址已经存放在指针变量pl中,所以完成“p2=&k”功能的表达式是:p2=p1.【答案】p2=p13 设有两条语句“int a,*p=&a;”和“*p= a;”,则下列说法中正确的是()①两条语句中的“*p”含义完全相同②两条语句中的“*p=&a”和“*p=a”功能完全相同③第 1条语句中的“*p=&a”是定义指针变量 p并对其初始化④第2条语句中的“*p=a”是将a的值赋予变量p【分析】分析备选答案①:第1条语句是数据定义语句,其中的“*p”表示定义的变量p是指针型变量;第2条语句是赋值语句,其中的“*p”代表它所指向的变量a,所以该备选答案是错误的,不符合题意。分析备选答案②:第 1条语句中的“*p= &a”是将变量 a的地址以初值方式赋予指针变量 p;而第 2条语句中的“*p=a”是将变量 a中的值赋予指针变量 P指向的变量(注意也是 a,即该语句的作用和 a= a完全相同),显然该备选答案是错误的,不符合题意。再分析备选答案③:显然该答案是正确的,符合题意。至于备选答案④,显然是错误的“*p”是代表指针变量p指向的变量,不能代表指针变量p。【答案】③4 设有定义语句“ int x,*p= &x;”,则下列表达式中错误的是()①*x? ? ②&*x? ? ③*p? ? ④&*p【分析】注意“*”和“&”运算将是同一优先级别的,结合性是自有向左。接着来分报备选答案①:&x代表变量x的地址,*(&x)代表“&x”地址对应的变量,即变量X,一股说“*变量”就是该变量,所以该答案是正确的,不符合题意。备选答案②中的“*x”是错误的,因为x是普通变量,不是指针型变量,而运算符“*”的运算对象必须是地址,所以该答案符合题意。显然备选答案③和④都是正确的。我们来分析一下。备选答案③的格式属于“*变量”,所以其结果为指针型变量p,是正确的。备选答案④中的“*P”代表指针变量P指向的变量x,(*p)代表变量X的地址,也是正确的。一般说“&*指针变量”,则代表指针变量指向的变量的址。【答案】 ②5 设有定义语句“float s[10],*p1=s,*p2=s+5;”,下列表达式中错误的是()① p1= 0xffff? ? ② p2--? ? ③ p1-p2? ?④ p1<=p2【分析】当两个指针变量指向同一个数组时,每个针变量都可以进行增 l、减 1运算,两个指针变量之间可以进行减法运算和关系运算。显然备选答案②、③。④是正确的,不符合题意,只有备选答案①才是错误的,符合题意。对备选答案①的分析也很简单,因为C语言规定,所以的地址表达式中,不允许使用具体的整数来表示地址。【答案】①6 有下列定义语句“char s[]={12345},*p=s;”,下列表达式中错误的是()? ?①*(p+2)??②*(s+2)??③ p=ABC??④ s=ABC【分析】分析备选答案①:指针变量p已经指向数组s首地址,则p+2代表数组元素s[2]的地址,*(p+2)就是代表数组元素s[2],所以是正确的,不符合题意。分析备选答案②:s是数组名,代表数组首地址,s+ 2代表数组元素 a[2]的地址,*(S+ 2)代表数组元素s[2],和备选答案①一样,也不符合题意。分析备选答案③:C语言规定,在程序中可以使用赋值运算符将字符串常量直接赋予字符型指针变量,所以该备选答案也是正确的,不符合题意。只有备选答案④是错误的,符合题意。原因是C语言规定,在程序中不允许将字符串常量以赋值语句方式直接赋予字符型数组。【答案】④7 设有语句“float x[4][10],*p=x;”,则下列表达式中不属于合法地址的表达式是()? ?①x[1][2]? ?? ???②*(p+1* 10+2)? ?③x[1]? ?? ?? ?? ?④ p+1* 10+2[分析]分析备选答案①:x[1][2]是合法的数组元素,所以“&x[1][2]”表示数组元素

文档评论(0)

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

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

1亿VIP精品文档

相关文档