/*楼主真心想学不妨一试下面这个小程序(已调试通过)*/
#include<stdio.h>
main( )
{
char a[4][20]={"Visual C++","3.141593","Good Morning","welcome"};
char(*p1)[20]=a,*pa[4]={a[0],a[1],a[2],a[3]},**p2=pa+2;
puts(*p1++);
puts(*p1++);
puts(*p2++);
puts(*p2++);
}
// [讲评]
// a 是二维数组名、相当于2级常量指针,a=&a[0]
// a[0]相当于1级常量指针,a[0]==&a[0][0]
// p1 是1个变量,属性为2级指针。
// pa 指针数组有4个元素,pa[i]存放a数组i号行的首地址(i=0,1,2,3)
// p2 是2级指针变量,最初存放pa[2]的地址。
// 当p2与pa[ ]挂上钩以后,p2++、p2--的含义就不言自明了。
[此贴子已经被作者于2006-6-9 16:41:36编辑过]
----------------解决方案--------------------------------------------------------
谢谢各位的帮忙,我有点明白了,在这里a不是二级指针,我一直都以为他是个二级指针所以类型不相符,现在我虽然知道这一点,但是还是理解不了为什么他是个二级指针。
我以前的思路是这样的a[0][0]可以表示成指针形式**a;那么a就是一个二级指针。但是实际上a,a[0],&a地址是一样的,把a[0][0]表示成**a也是对得,我错在那里了。
这里谢谢斑竹和三楼的朋友
----------------解决方案--------------------------------------------------------
a[][],a是指针
**p,p是指向指针的指针
----------------解决方案--------------------------------------------------------
说简单点。一个一级指针变量用于存放一个变量或数组的地址,一个二级指针用于存放一个指针变量的地址。要想让一个二级指针指向二维数组你要先让数组名它指向一个一级指针。(前面已说了,剩下的我就不知道了,你自己看着办)。
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽