指针典型例题分析与解答

指针典型例题分析与解答,第1张

指针典型例题分析与解答,第2张

1 对于变量x,其地址可以写成________;对于数组y[10],其首地址可以写成________或__________;对于数组元素y[3],其地址可以写成__________或_________。
【分析】变量的地址可以写成“&变量名”。数组的首地址就是数组名,也可以写成第 1个元素的地址“&数组名[0]”。数组元素的地址可以写成“&数组元素”,也可以写成“数组首地址十下标”。
【 答案】 &x
y
&y[0]
&y[3]
y+3
2 设有定义语句“int k,*p1=&k,*p2;”,能完成表达式“p2=&k”功能的表达式可以写成_______________。
【分析】注意原来表达式“p2=&k”的主要功能是将变量k的地址存放到指针变量p2中。现
在变量k的地址已经存放在指针变量pl中,所以完成“p2=&k”功能的表达式是:p2=p1.
【答案】p2=p1
3 设有两条语句“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语言规定,所以的地址表达式中,不允许使用具体的整数来表示地址。
【答案】①

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 指针典型例题分析与解答

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情