还有一个问题:
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+1)
为什么?
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+1)
为什么?
当然是B了
内存中并不存在元素 t[3][2],因此 &t[3][2]当然是错的。若写成 &t[0][0],&t[0][1],&t[1][0],&t[1][1],&t[2][0],&t[2][1]都可以
*pt[3]是一个指针数组,
for循环完成后
pt[0]指向t[3][2]数组的第一行, pt[1]则指向第二行, pt[2]指向第三行
即 pt[0]的值为数组第一行的首地址,即第一行第一个元素的地址
pt[1]的值为数组第二行的首地址,即第一行第二个元素的地址
pt[2]的值为数组第三行的首地址,即第一行第三个元素的地址
而pt[0]也可以写成*pt
pt[1]也可以写成*(pt+1);
pt[2]也可以写成*(pt+2);