求C语言程序分析

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:20:38
int a[3][4]={
{1,3,5,7},
{9,11,13,15},
{17,19,21,23}
};

main()
{
int i,(*b)[4];
b=a+1;
for(i=1;i<=4;b=b[0]+2,i++) /* 这里总是无法理解 */
printf(%d\t,*b[0]);
printf(\n);
for(i=0; i<3; i++)
{
b=a+i;
printf(%d\t,*(b[i]+1));
}
printf (\n);
}
程序运行结果如下:
9 13 17 21
3 11 19
我是初学者。。请高手指点。。最好是每句都分析详细一点。
这是一个C语言教程里的例子,我把它复制下来了。。但总是搞不明白。前面都可以理解。。到了这里
for(i=1;i<=4;b=b[0]+2,i++)
printf(%d\t,*b[0]);
总是理解不过来。。b被重新指向了。输出*b[0]怎么也不通呀。。
这个b=b[0]+2重新指向后。b就是a[1][2]输出*

int a[3][4]={
{1,3,5,7},
{9,11,13,15},
{17,19,21,23}
}; //定义 一个三行四列的数组

main() //这是主函数,是程序运行的入口,
{
int i,(*b)[4]; //定义一个整形的变量 i, 一个指针数组有四个元素
b=a+1; //b 数组指向a数组第二个位置,
for(i=1;i<=4;b=b[0]+2,i++) /* 这里总是无法理解 */
printf(%d\t,*b[0]);
printf(\n);
for(i=0; i<3; i++)
{
b=a+i;
printf(%d\t,*(b[i]+1)); //隔一个制表符 输出一个元素是数组元素加1。
}
printf (\n); //输出换行
}

int a[3][4]={
{1,3,5,7},
{9,11,13,15},
{17,19,21,23}
}; /*定义数组

main()
{
int i,(*b)[4];
b=a+1;
for(i=1;i<=4;b=b[0]+2,i++) /* i为循环变量 i=1为初始值 i<4为限制条件
最后那句是每次循环后执行的语句*/
printf(%d\t,*b[0]); /*打印 %d上加双引号 \t就是TAB的功能
空一大格 /n 就是换行
printf(\n);
for(i=0; i<3; i++)
{
b=a+i;
printf(%d\t,*(b[i]+1));
}
printf (\n);