比如有一个二维数组:
int block[4][8] = {0};
该如何定义一个指针并指向上面这个数组呢?
还有就是如何使用这个指针?也就是用指针来代替下面循环中的block。
for(int k=0; k<8; k++)
{
if(block[i][k]>0)
{
//do something
}
}
比如有一个二维数组:
int block[4][8] = {0};
该如何定义一个指针并指向上面这个数组呢?
还有就是如何使用这个指针?也就是用指针来代替下面循环中的block。
for(int k=0; k<8; k++)
{
if(block[i][k]>0)
{
//do something
}
}
因为数据都是顺序存储在一起的,所以也可以用一个指针完成对二维数组的遍历。
int *p = &block[0][0];
for (int i=0; i<4*8; ++i)
if (p[i] > 0) {
// do_sth
}
[1]p指向数组首地址通过嵌套循环遍历数组所有元素
int *p = block;
int i,j;
for(i = 0;i < 4;i++)
{
for(j = 0;j < 8;j++)
{
if(*(*(p+i)+j) > 0)
{
//do something
}
}
}
[2]p指向一个含有8个int元素的数组,p + 1移动一个数组大小
int (*p)[8] = block
int i,j;
for(i = 0;i < 4;i++)
{
for(j = 0;j < 8;j++)
{
if(*(p + i)[j] > 0)
{
//do something
}
}
}
1.1k 阅读
1 回答197 阅读