要懂指针 就要懂 这些 指针的类型 指针的指向类型 指针的指向内容
指针的类型 就去去掉指针的名字剩下的就是指针的类型
如:int *p;去掉p 那么 这个指针的类型就是 int *;
指针的指向类型 就是去掉指针的名字和最接近的*号
如 int *p;去掉*p 那么这个指针所指向的类型是int;
如 int **p;去掉*p 那么这个指针所指向的类型是 int *;
指针所指向的内容就是 。。。。。。。。(不说你也懂)
根据上面的术语帮你这么个说:
#include"stdio.h"
int *seek(int (*pnt_row)[3])
这是个一维数组
{int i=0,*pnt_col;
pnt_col=*(pnt_row+1);
这里是其实是个设置的问题 因为它是根据地址的比较来输出的 如果地址相等就输出
这么说吧 1等于1,这个没什么好争议的吧,但是 1等于(?)把1隐藏起来先,
这好比:开始不信任随便给它个值 1等于狗
内部自检问题,外头说什么,爷们我不信啊,先检查检查核对核对先。
暗中进行检查,一检查正常,盖章批准 1等于1.如果检查到什么病啊 毒啊。
好了,那么就死啦死啦地,直接让 1等于狗 出现给外界,外界就不高兴了 不输出
for(;i<3;i++)
if(*(*pnt_row+i)<60)
*pnt_row是一维数组的首地址,*pnt_row+i就是一维数组的第i个值的地址,自然*(*pnt_row+i)就是
一维数组的第i个元素的值。
{
pnt_col=*pnt_row;
这个就是把grade[3][3]的行地址赋给pnt_col 因为外面就是靠行地址进行判断的哦
break;
}
return(
pnt_col);
返回一个指针
}
main()
{
int grade[3][3]={{55,65,75},{65,45,85},{75,80,90}};
int i,j,*pointer;
for(i=0;i<3;i++)
{
pointer=seek(grade+i);
seek函数其实是传递每一行过去
pointer得到seek函数返回的地址
if(pointer==*(grade+i))
{
printf("NO.%d grade list:",i+1);
for(j=0;j<3;j++) printf("%d ",*(pointer+j));
printf("\n");
}
}
}
[
本帖最后由 do8do8do8 于 2010-7-22 14:07 编辑 ]