学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 11 12
发新话题
打印

一个指针选择题

一个指针选择题

下面程序的输出结果是____。
main()
{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a;
p+=6;
printf("%d ",*p); /* ① */
printf("%d ",*(*(a+6))); /* ② */
printf("%d ",*(a[1]+=2)); /* ③ */
printf("%d",*(&a[0][0]+6));/* ④ */
}  

A:7 7 7 7
  
B:②句语法错误
  
C:③句语法错误
  
D:④句语法错误


我选D 不知道对否?  大家给我解释下B,C,D   谢谢`

TOP

选D对吗?  没人帮忙啊??

TOP

试验证明,C是正确的.
前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。

TOP

为啥啊??  解释下`

TOP

我也不太明白,明白早就给你说了.
前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。

TOP

选b!

b中!  
a+2是a[2][0]的地址;a+6超出a[3][],是a[6][0];

TOP

一上一上又一上  一上上到高山上

TOP

printf("%d ",*p);错误
printf("%d ",*(*(a+6)));错误
printf("%d ",*(a[1]+=2));错误
printf("%d",*(&a[0][0]+6));正确
首先 int *p=a;这句就有问题,一维数组可以用数组名表示数组的首地址,但是二维数组的首地址应该这样表示:&a[0][0];

[ 本帖最后由 winderlla 于 2008-5-14 20:32 编辑 ]

TOP

我实际运行了一下,答案应该选择的是C。
我把源程序改动了一下,不过运行结果说明B也是不正确的!
#include "stdio.h"
main()
{
    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int *p=a;
    p+=6;
    printf("%d\n",*p);
    printf("%d\n",*(*(a+6)));
    printf("%d\n",*(a[1]+2));
    printf("%d\n",*(&a[0][0]+6));
    }
附件: 您所在的用户组无法下载或查看附件
☆滴水穿石☆水滴石穿☆
QQ:920633639

TOP

对于B怎末改不太清楚了
☆滴水穿石☆水滴石穿☆
QQ:920633639

TOP

 11 12
发新话题