哪位大侠忙我解释一下这个数组、指针的例子呀~~~
/* 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;
[解决办法]
[解决办法]
*(pboard+i)就是随着i的递增指针往后移动。*pboard=board[0][0]
[解决办法]
楼上正解,pboard这样的指针 直接+ - 是很常见的,特别是在linux的编程中,呵呵呵
[解决办法]
或者楼主可以去看下 环形buffer是怎么设计的, 其实就是指针的来回跳动
[解决办法]
board分配连续9个字节空间 *pboard 指向一个字节空间,类型为char 剩下的你懂了吧?