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 }
View Code

相关文章: