int a[2][3]={1,2,3,4,5,6};
int *p;
p=a[0];
输出*(p+1)为2;
p=a;
输出*(p+1)也为2;
请问下p=a[0]和p=a含义有区别么?
----------------解决方案--------------------------------------------------------
a[0]是数组的第一个参数
a是指针 指向数组第一个参数
你这个我有点不明白哦 请达人指教
----------------解决方案--------------------------------------------------------
a[0]指向第一行数组的指针
a指向整个数组的指针
----------------解决方案--------------------------------------------------------
[QUOTE]请问下p=a[0]和p=a含义有区别么?[/QUOTE]
a表示a[0][0]。
a[0]表示a[0][x],(x表示待定)。
----------------解决方案--------------------------------------------------------
你就把它理解为一维数组,他的两个元素(a[0]&a[1])分别又都是一维数组.
----------------解决方案--------------------------------------------------------
int a[2][3]={1,2,3,4,5,6};
int *p;
p=a[0];
输出*(p+1)为2;
p=a;
输出*(p+1)也为2;
请问下p=a[0]和p=a含义有区别么?
a是二维数组,用指针操作时可看作是一个二级指针。也就是说a是二级指针,而您声明的int *p是一级指针。
把p=a是类型不匹配的,有的编译器可以编译(这里进行了强制转换p=(int *)p),有的不行,严格来说,这是错误的。
a[0]是一级指针。p=a[0]才是正确的。
----------------解决方案--------------------------------------------------------
楼上的说得对!
C -free里面是不能通过编译的,Wintc可以。
----------------解决方案--------------------------------------------------------
a是二维数组,用指针操作时可看作是一个二级指针。也就是说a是二级指针,而您声明的int *p是一级指针。
把p=a是类型不匹配的,有的编译器可以编译(这里进行了强制转换p=(int *)p),有的不行,严格来说,这是错误的。
a[0]是一级指针。p=a[0]才是正确的。
太感谢了,关于二级指针方面的内容哪里有更详细的介绍??谭的那本书里好象没这个概念哦。
----------------解决方案--------------------------------------------------------
不要说没有,指针的指针不就是二级指针吗.
指针数组和数组指针的区别.
指针数组就是指数组中的每一个元素是一个指针.int *p[10];
数组指针就是指向数组的指针 int (*p)[10];
你这里定义一个二唯数组就应该定义一个指向数组的二级指针来代替数组进行操作.
----------------解决方案--------------------------------------------------------