LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1314|回复: 12

c程序求解!!!

[复制链接]
发表于 2005-4-11 15:02:39 | 显示全部楼层 |阅读模式

  1. main()
  2. {
  3. typedef char CA3[2][2][2];
  4. typedef CA3 *PCA3;
  5. typedef char CA2[2][2];
  6. typedef CA2* PCA2[2];

  7. CA3 ca3={'A', '\0', 'B', '\0', 'C', '\0', 'D', '\0'};
  8. PCA3 pca3 = &ca3;
  9. PCA2 pca2={ca3, ca3+1};

  10. int i=0,j=0;
  11. for(i=0; i<2; i++)
  12. {
  13. printf("\n");
  14. printf("%s\n", (char*)pca3[0][i]);
  15. printf("%s\n", (*(pca2+i))[0][1]);
  16. for(j=0; j<2; j++)
  17. {
  18. putchar(*(*(ca3+i)+j)[0]);
  19. putchar(' ');
  20. }
  21. }
  22. }
  23. 求输出的结果是:_____________________
复制代码
 楼主| 发表于 2005-4-11 15:12:03 | 显示全部楼层
main()
{
typedef char CA3[2][2][2];
typedef CA3 *PCA3;
typedef char CA2[2][2];
typedef CA2* PCA2[2];

CA3 ca3={'A', '\0', 'B', '\0', 'C', '\0', 'D', '\0'};
PCA3 pca3 = &ca3;
PCA2 pca2={ca3, ca3+1};

int i=0,j=0;
for(i=0; i<2; i++)
{
printf("\n");
printf("%s\n", (char*)pca3[0]);
printf("%s\n", (*(pca2+i))[0][1]);
for(j=0; j<2; j++)
{
putchar(*(*(ca3+i)+j)[0]);
putchar(' ');
}
}
}
求输出的结果是:_____________________
回复 支持 反对

使用道具 举报

发表于 2005-4-11 15:47:26 | 显示全部楼层
A
B
A B
C
D
C D

哈哈,不过哦是编译运行看到的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-11 17:50:20 | 显示全部楼层
printf("%s\n", (*(pca2+i))[0][1]); 请哪位给我讲一下这句的输出为什么一次是B一次是D,我怎么老觉得他应该两次都是0/呀!
回复 支持 反对

使用道具 举报

发表于 2005-4-12 21:40:29 | 显示全部楼层
写这样风格程序的人的目的只是为了增加阅读人的痛苦
回复 支持 反对

使用道具 举报

发表于 2005-4-13 11:31:24 | 显示全部楼层
严重同意。
回复 支持 反对

使用道具 举报

发表于 2005-4-13 13:22:25 | 显示全部楼层
我如果是老板,谁写出这样的代码,我第一个抄他鱿鱼。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-13 17:21:28 | 显示全部楼层
研究一下对一些概念的理解会深入一些!就是花点时间和脑力!
回复 支持 反对

使用道具 举报

发表于 2005-4-13 19:43:30 | 显示全部楼层
vim =G
自动对齐基本就可以看看了。
回复 支持 反对

使用道具 举报

发表于 2005-4-14 12:54:16 | 显示全部楼层
Post by caicheng
printf("%s\n", (*(pca2+i))[0][1]); 请哪位给我讲一下这句的输出为什么一次是B一次是D,我怎么老觉得他应该两次都是0/呀!

呵呵,code果然很简洁啊,应该是pca2的第 i个元素的内容的数组的第0,1个元素,感觉这个数组好复杂啊,头晕了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表