指针典型例题分析与解答

指针典型例题分析与解答

ID:16142354

大小:20.65 KB

页数:8页

时间:2018-08-08

指针典型例题分析与解答_第1页
指针典型例题分析与解答_第2页
指针典型例题分析与解答_第3页
指针典型例题分析与解答_第4页
指针典型例题分析与解答_第5页
资源描述:

《指针典型例题分析与解答》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、指针典型例题分析与解答1对于变量x,其地址可以写成________;对于数组y[10],其首地址可以写成________或__________;对于数组元素y[3],其地址可以写成__________或_________。【分析】变量的地址可以写成“&变量名”。数组的首地址就是数组名,也可以写成第1个元素的地址“&数组名[0]”。数组元素的地址可以写成“&数组元素”,也可以写成“数组首地址十下标”。【答案】&x      y      &y[0]      &y[3]      y+32设有定义语句“intk,*p1=&k,*p2;”,能完成表达式“p

2、2=&k”功能的表达式可以写成_______________。【分析】注意原来表达式“p2=&k”的主要功能是将变量k的地址存放到指针变量p2中。现在变量k的地址已经存放在指针变量pl中,所以完成“p2=&k”功能的表达式是:p2=p1.【答案】p2=p13设有两条语句“inta,*p=&a;”和“*p=a;”,则下列说法中正确的是()①两条语句中的“*p”含义完全相同②两条语句中的“*p=&a”和“*p=a”功能完全相同③第1条语句中的“*p=&a”是定义指针变量p并对其初始化④第2条语句中的“*p=a”是将a的值赋予变量p【分析】分析备选答案①:第

3、1条语句是数据定义语句,其中的“*p”表示定义的变量p是指针型变量;第2条语句是赋值语句,其中的“*p”代表它所指向的变量a,所以该备选答案是错误的,不符合题意。分析备选答案②:第1条语句中的“*p=&a”是将变量a的地址以初值方式赋予指针变量p;而第2条语句中的“*p=a”是将变量a中的值赋予指针变量P指向的变量(注意也是a,即该语句的作用和a=a完全相同),显然该备选答案是错误的,不符合题意。再分析备选答案③:显然该答案是正确的,符合题意。至于备选答案④,显然是错误的“*p”是代表指针变量p指向的变量,不能代表指针变量p。【答案】③4设有定义语句“

4、intx,*p=&x;”,则下列表达式中错误的是()①*&x  ②&*x  ③*&p  ④&*p【分析】注意“*”和“&”运算将是同一优先级别的,结合性是自有向左。接着来分报备选答案①:&x代表变量x的地址,*(&x)代表“&x”地址对应的变量,即变量X,一股说“*&变量”就是该变量,所以该答案是正确的,不符合题意。备选答案②中的“*x”是错误的,因为x是普通变量,不是指针型变量,而运算符“*”的运算对象必须是地址,所以该答案符合题意。显然备选答案③和④都是正确的。我们来分析一下。备选答案③的格式属于“*&变量”,所以其结果为指针型变量p,是正确的。备

5、选答案④中的“*P”代表指针变量P指向的变量x,(*p)代表变量X的地址,也是正确的。一般说“&*指针变量”,则代表指针变量指向的变量的址。【答案】②5设有定义语句“floats[10],*p1=s,*p2=s+5;”,下列表达式中错误的是()①p1=0xffff  ②p2--  ③p1-p2  ④p1<=p2【分析】当两个指针变量指向同一个数组时,每个针变量都可以进行增l、减1运算,两个指针变量之间可以进行减法运算和关系运算。显然备选答案②、③。④是正确的,不符合题意,只有备选答案①才是错误的,符合题意。对备选答案①的分析也很简单,因为C语言规定,所

6、以的地址表达式中,不允许使用具体的整数来表示地址。【答案】①6有下列定义语句“chars[]={"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语言规定,在

7、程序中可以使用赋值运算符将字符串常量直接赋予字符型指针变量,所以该备选答案也是正确的,不符合题意。只有备选答案④是错误的,符合题意。原因是C语言规定,在程序中不允许将字符串常量以赋值语句方式直接赋予字符型数组。【答案】④7设有语句“floatx[4][10],*p=x;”,则下列表达式中不属于合法地址的表达式是()  ①&x[1][2]      ②*(p+1*10+2)  ③x[1]        ④p+1*10+2[分析]分析备选答案①:x[1][2]是合法的数组元素,所以“&x[1][2]”表示数组元素x[l][2]的地址。分析备选答案②:由于指

8、针变量指向二维数组首地址,“*(指针变量十行下标*列长度十列下标)”是表示数组元素“数组名[行

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。