作业帮 > 综合 > 作业

C语言关于指针和二维数组的问题.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 06:13:48
C语言关于指针和二维数组的问题.
准备将a[m][n]赋给指针时.定义指针时*p *p[N] (*p)[N]这有什么区别?
p+1.对于这3种情况意义是一样的吗?
第一个*p,指向a[m][n]时,p指向a[0][0],p+1是指向a[1][0];
第二个*p[N],这是一个指针书组,很少有人这么用,也看你怎么把a地址赋值,p[0]是指向一个字符串,p[0]是指向下一个字符串就是a[1],p+1会被默认为p[0]+1,指向a[0][1];
第三个(*p)[N],首先问下,这是定义指针?要是C++里我还能认为是给指针分配空间,不过,分配空间也完全.
再问: sizeof(int)*N这个应该是小n吧?确实准备去看那两本书了
再答: 这个N就是(*p)[N]里的N,你定义的时候N是多少就是多少,它指定了数组指针指向的数组的大小,p+1的大小实际上就是移动了一个这样的数组的的大小。 另外,*p[N]之所以和(*p)[N]不一样,是因为,[]运算符的优先级要比*高些,他会先和p结合,所以*p[N]是数组。加上括号的(*p)[N],因为*p在()里面,它们先结合,所以,(*p)[N]本质上是指针