!多维数组与指针这有点有关问题不能理解呢!多谢
求助!多维数组与指针这有点问题不能理解呢!谢谢
多维数组在内存里是连续的地址,所以应该可以用一个指针连续自增就能连续的指向这些数组,如下代码:
void main(){
int a[5][5] = {};
int* p = a[0];
for(;p <= &a[4][4];p++)
*p = 1; //数组全部赋1
}
但是我改成下面这样就会段错误:
void main(){
int a[5][5] = {};
int* p = a[0];
for(;p <= p + 24;p++)
*p = 1; //数组全部赋1
}
为什么呢?多维数组在内存里不是连续的吗?我定义了25个空间的数组,赋值给p指向第一个,p+24不就是最后一个吗?谢谢!
------解决思路----------------------
for(;p <= p + 24;p++) 这是个死循环
多维数组在内存里是连续的地址,所以应该可以用一个指针连续自增就能连续的指向这些数组,如下代码:
void main(){
int a[5][5] = {};
int* p = a[0];
for(;p <= &a[4][4];p++)
*p = 1; //数组全部赋1
}
但是我改成下面这样就会段错误:
void main(){
int a[5][5] = {};
int* p = a[0];
for(;p <= p + 24;p++)
*p = 1; //数组全部赋1
}
为什么呢?多维数组在内存里不是连续的吗?我定义了25个空间的数组,赋值给p指向第一个,p+24不就是最后一个吗?谢谢!
------解决思路----------------------
for(;p <= p + 24;p++) 这是个死循环