int *p()是返回指针的函数
int (*p)()是指向函数的指针
返回指针的函数:
int *a(int x,int y);
有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。
1 #include <iostream> 2 #include <stdio.h> 3 #include <vector> 4 #include <string.h> 5 using namespace std; 6 #define NOCLASS 4 7 float *search(float (*pointer)[NOCLASS], int iter); 8 int main(int argc, char* argv[]) 9 { 10 float score[][NOCLASS] = {{60,70,80,90}, {56,90,87,67}, {56,89,67,88}, {34,78,90,66},{34,78,90,98},{34,78,90,100}}; 11 12 float *p; 13 int m; 14 while(1) 15 { 16 printf("enter the number of student:"); 17 scanf("%d", &m); 18 printf("the scores of No.%d are:\n", m); 19 p = search(score, m); 20 for (int i = 0; i < NOCLASS; ++i) { 21 //请思考Line22和Line35为什么不一样呢, 一维与二维 22 printf("%5.2f\t", *(p+i)); 23 printf("p+i:%#x\n",p+i); 24 } 25 printf("\n"); 26 } 27 return 0; 28 } 29 30 //数组指针,是一个指针,指向一个数组,相当于二位数组,n*4,int,int,int,int 31 float *search(float (*pointer)[NOCLASS], int iter) 32 { 33 float *pt; 34 printf("pointer:%#x\n", pointer); 35 pt = *(pointer + iter);//*(*(p+iter)+0)) = *(*(p+iter)) 36 printf("pt:%#x\n", pt); 37 return (pt); 38 }