问题 单项选择题

若有下面的程序片段: int[12]={0},*p[3],**pp,i; for(i=0;i<3;i)p[i]=&a[i*4]; pp=p 则对数组元素的错误引用是

A.pp[0][1]

B.a[10]

C.p[3][1]

D.*(*(p+2)+2)

答案

参考答案:C

解析:[命题目的] 考查指向数组的指针。[解题要点] 本题综合考查一维数组和多维数组指针变量的表示方法。在C语言中,引用数组元素的方法有两种,即:下标法和指针法。下标法如a[i]形式;指针法如*(a+i)或*(p+1)。其中a是数组名,p是指向数组的指针变量,其初值p=a。再如*(*(p+2) +2)是a[2][2]的值,注意语句中指针型数组的书写格式,不能写成“(*数组名)[长度]”,因为这是定义指向含有“长度”个元素的一维数组的指针变量。例如有定义语句“int a,b,c,c,*P[3]={&a,&b,&c};”,它定义了一个名为p的指针型数组,其3个元素p[0],p [1],p[2]分别指向B个整型变量a,b,c。[考点链接] 数组元素的引用方法。

多项选择题
问答题 简答题