读书人

函数数组指针的一点疑问。解决办法

发布时间: 2012-02-02 23:57:14 作者: rapoo

函数数组指针的一点疑问。
#include "stdio.h "
main()
{
float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float * search(float(* pointer)[4],int n);
float *p;
int i,m;
printf( "enter the number of student: ");
scanf( "%d ",&m);
printf( "the scores ofNo.%d are:\n ",m);
p=search(score,m);
for(i=0;i <4;i++)
printf( "%5.2f\t ",*(p+i)); /*22222*/
}
float *search(float (* pointer)[4],int n)
{
float *pt;
pt=*(pointer+n);/*11111*/
return(pt);
}


上面是一个关于打印出 数组中数据的程序

我的疑问是 11111这一点 *(pointer+n)是数组的第一维进行操作
但是22222 这里为什么同样是取了地址 *(p+i)却是 取指针地址+1的值呢????????

[解决办法]
1111的pointer类型是 float[4] * 加1跳过4个float
222的p类型是float * 加1跳过1个float

[解决办法]
float (* pointer)[4]就是实参score[][4]

pointer功能一样> > 没看懂
float *pt;
float **socre; //float score[][4];

这么写明白么~~~ ^_^

[解决办法]
float (* pointer)[]

float *p

pointer是个数组名,p是个float指针

读书人网 >C语言

热点推荐