哦那再问你个问题1.*(*(p+i)+j)表示什么,*(p+i)+j又表示什么,这两个区别是? 2.那*(p+i+j)的意思和*(*(p+i+j))的意思,;两个区别?
追答1.*(*(p+i)+j)表示 p[i][j] ,*(p+i)+j 表示 p[i]+j 如果p是二维数组 那么,*(p+i)+j 就表示指向 p[i][j] 的指针 2.那*(p+i+j)的意思是:一维数组 p[i+j]
和*(*(p+i+j))的意思是:p[i][j]; 两个区别 *(p+i+j)是单指针 即一维数组名 *(*(p+i+j)) 表示双重指针 即二维数组名 (二维数组名,指向一维数组p[0],即0行首地址)
还是有些不理解,你说除了定义int *p ,+*是内容,不加是地址 那*p=a这是内容,那a是什么???
追答a必须也是一个非指针类型的变量
如果p是int *p,那么a就是int a
哦那再问你些问题1.*(*(p+i)+j)表示什么,*(p+i)+j又表示什么,这两个区别是? 2.那*(p+i+j)的意思和*(*(p+i+j))的意思,两个区别?
追答1. *(*(p+i)+j)是一个二级指针,表示p+i+j这个地址中的地址中的(地址中装着地址)内容,可以理解为二维数组p的第i行第j列的内容,等同于p[i][j],*(p+i)+j很自然就表示的是p[i][j]的地址,相当于&p[i][j]
2. 还是一级和二级指针的问题,前者是一维,后者是二维
楼主对指针的理解还存在较大问题,需要多看下教材,最好是能看一下带配图的讲解会比较清楚一些,这是C语言的精华,需要认真学习