首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于C语言指针的有关问题

2012-02-28 
关于C语言指针的问题132以下程序执行后a的值是main(){inta,k4,m6,*p1&k,*p2&map1&mprintf( %d\n

关于C语言指针的问题
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)呢?

[解决办法]
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的书就可以明白的
[解决办法]
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答案.

[解决办法]
a=p1==&m;
相当于a=0,因为p1!=&m.

楼主一定想选B吧?答案是因为*的优先级高.

热点排行