读书人

哪位大侠忙小弟我解释一下这个数组、指

发布时间: 2012-04-28 11:49:53 作者: rapoo

哪位大侠忙我解释一下这个数组、指针的例子呀~~~
/* Program 7.9 Multidimensional arrays and pointers*/
#include <stdio.h>

int main(void)
{
char board[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};

char *pboard = *board; /* A pointer to char */

for(int i = 0; i < 9; i++)
printf(" board: %c\n", *(pboard + i));
return 0;
}


-----------------例子结束-------------------------

非常不明白的地方是:

1.*(pboard + i)这个地方每次循环都得到什么结果?

2.如果大侠帮我写出每次循环的具体过程,就太感谢了~~~~

[解决办法]
每次循环都是指向p[i].
对于这种所谓的二维数组 board, p[i]对应着 board[m][n]. 其中i==m*3+n; n<3;
[解决办法]

探讨
其实还是不是很明白,就内个i不是从0到8么,那当它为8的时候,怎么就是数组中的数了呢?
还有您这个board[m][n]. 其中i==m*3+n; n<3;是公式?
新手,请见谅~~~

[解决办法]
*(pboard+i)就是随着i的递增指针往后移动。*pboard=board[0][0]

[解决办法]
楼上正解,pboard这样的指针 直接+ - 是很常见的,特别是在linux的编程中,呵呵呵
[解决办法]
或者楼主可以去看下 环形buffer是怎么设计的, 其实就是指针的来回跳动
[解决办法]
board分配连续9个字节空间 *pboard 指向一个字节空间,类型为char 剩下的你懂了吧?

读书人网 >C++

热点推荐