关于C语言指针的问题

kingdompk722 2007-05-09 11:38:37
132 以下程序执行后a的值是

main()
{ int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf("%d\n",a); /*为什么a=0? */
}
255若有以下的说明和语句:
main()
{int t[3][2], *pt[3],k;
for(k=0; k<3;k++) pt[k]=t[k];
}
则以一选项中能正确表示t数组元素地址的表达式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
为什么 是答案C) *(pt+1)呢?
...全文
363 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dai_weitao 2007-05-09
  • 打赏
  • 举报
回复
a=p1==&m;
相当于a=0,因为p1!=&m.

楼主一定想选B吧?答案是因为*的优先级高.
zhuyc 2007-05-09
  • 打赏
  • 举报
回复
阿拉也学习下
amei_zhang83 2007-05-09
  • 打赏
  • 举报
回复
呵呵,学习下~~~~
sqlaspjs 2007-05-09
  • 打赏
  • 举报
回复
sfch2008 2007-05-09
  • 打赏
  • 举报
回复
colxy 2007-05-09
  • 打赏
  • 举报
回复
main()
{ int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf("%d\n",a); /*为什么a=0? */ /*上一句语句可以写成这样a=(p1==&m);由于==优先级高于=,所以它先判断了(p1==&m)是否成立.在题中它不成立,则a=0.*/
}
255若有以下的说明和语句:
main()
{int t[3][2], *pt[3],k;
for(k=0; k<3;k++) pt[k]=t[k];
}
则以一选项中能正确表示t数组元素地址的表达式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
为什么 是答案C) *(pt+1)呢?
/*在数据基本类型声明中,定义了一个指针数组,其中将二元数组t中每一行作为一个新的一员数组b[3](其中b[0]包含了两个元素,即t[0][0]和t[0][1],b[1]包含了两个元素,即t[1][0]和t[1][1],b[2]包含了两个元素,即t[2][0]和t[2][1]).而pt[0]存储的是第一行的地址,即:int *pt[0]=&b[0].所以选择了c答案.
ayw215 2007-05-09
  • 打赏
  • 举报
回复
main()
{ int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf("%d\n",a); /*为什么a=0? */-----你的上面一句中==优先级高于=,所以。。。
}


main()
{int t[3][2], *pt[3],k;
for(k=0; k<3;k++) pt[k]=t[k];
}
则以一选项中能正确表示t数组元素地址的表达式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
为什么 是答案C) *(pt+1)呢?
----------------------看老tan的书就可以明白的

70,012

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧