求助-----2维数组指针
这是从谈好强的书中看到的main()
{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++) /*这里P为什么可以初值不是A[0][0]啊??如果改了,后面P<应该怎么再改?*/
{if((p-a[0])%4==0)printf("\n");
printf("%4d",*p);}
}
----------------解决方案--------------------------------------------------------
int *p;// p是一个整型指针
for(p=a[0];p<a[0]+12;p++) /*这里P为什么可以初值不是A[0][0]啊??如果改了,后面P<应该怎么再改?*/
----------------解决方案--------------------------------------------------------
2楼的是什么意思???
----------------解决方案--------------------------------------------------------
楼主告诉我是多少页的,我有书,我帮你看看!
----------------解决方案--------------------------------------------------------
main()
{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++) /*这里P为什么可以初值不是A[0][0]啊??如果改了,后面P<应该怎么再改?*/
{if((p-a[0])%4==0)printf("\n");
printf("%4d",*p);}
}
我也是刚学到指针。。。
int * p;表明你定义的是一个指向整形的指针变量P
对于二维数组,a[0]表示的是个地址,a[0][0]表示的是个int元素,不能赋给p
不知道说的对不对??
----------------解决方案--------------------------------------------------------
定义的是二维数组,但在存储上他还是顺序存储,先存第一行,然后第二行。。。。
----------------解决方案--------------------------------------------------------
p 是指针.p=a[0]是把数组的首地址赋给它.也可以写成 p=a;
而不能写成 p=a[0][0]; 因为 a[0][0]是常量,而不是地址
----------------解决方案--------------------------------------------------------
回楼上的,不能写成p=a,它们俩的类型不正确
p=a[0]相当于p=*a,相当于把第一个元素a[0][0]的地址赋值给p,由于数组是线性编址的,
p<a[0]+12保证数组在不越界的情况下而能遍历数组中所有元素
----------------解决方案--------------------------------------------------------
新手请指教!
如果你强行要改的话可以改成:p=&a[0][0],同意5#和7#说法。 ----------------解决方案--------------------------------------------------------
就是第228页上面
----------------解决方案--------------------------------------------------------