int* getPosPerson(int pos, int (*pstu)[4]) 为返回值为指针的函数
注意这是指针函数,而不是函数指针,后者为指向函数的指针变量,两者含义是不同的
(类似指针数组和数组指针,两者含义也是不同的,一个本质是数组,一个本质是指针)
调用该函数的语句为:ppos = getPosPerson(pos, scores)
传入的scores表示3行4列的二维数组首行数组的地址,即&scores[0]
调用后相当于int (*pstu)[4]=scores,所以在getPosPerson中pstu与scores是等价的
即pstu可看作&scores[0],那么pstu+pos也就等价于scores+pos,等价于&scores[pos]
即返回了指向&scores[pos](也就是scores第pos+1行的地址)的指针
返回该行指针ppos 后,就可以查看该行表示的学生的4科成绩了
(*k)[3]意为指向包含三个整形元素的一位数组;*k[3]意为一个数组,数组的每个元素都是一个指针
以下为实例:
#include <stdio.h>
#include <conio.h>
void main(void)
{
int (*p)[3]
int a[2][3]={1,2,3,4,5,6}
p=a
//假设我们想输出第二行,第三个
printf("%d",*(*(p+1)+2))
getch()
}
#include <stdio.h>
#include <conio.h>
void main(void)
{
int *p[3]
int a=0,b=1,c=2
p[0]=&a
p[1]=&b
p[2]=&c
printf("%d,%d,%d",*p[0],*p[1],*p[2])
//输出结果为 0,1,2
}
不懂再问