C语言学习(六)指针5 返回指针的函数
2013-03-21 10:25
148 查看
返回指针的函数
1.一个函数可以返回指针型的数据,即地址。其一般定义形式为:类型名*函数名(参数列表);
例如:
int* max(int x,int y);
max是函数名,调用这个函数得到一个指向整形数据的指针。注意在*max两侧没有括号。()运算符高于*运算符,因此max先与()结合,再与*结合。
2.例子,有若干学生成绩,每个学生有4门课程。输入一个序列号,能输出该学生的全部成绩。用指针函数实现。
#include<stdio.h>
void main() {
float score[][4] = {{56,33,25,86},{87,54,3,65},{98,56,4,33},{53,2,45,23}};
float * search(float (*pointer)[4],int n);
float * p;
int i,m;
printf("enter the number of student:");
scanf("%d",&m);
printf("the scores of NO.%d are:\n",m);
p= search(score,m);
for(i= 0; i < 4; i++) {
printf("%0.2f\t",*(p+i));
}
printf("\n");
}
float * search(float (* pointer)[4],int n) {
float * pt;
pt= *(pointer+n);
return(pt);
}
输出:
enterthe number of student:2
thescores of NO.2 are:
98.00 56.00 4.00 33.00
3.找出其中不及格的学生以及学生号
#include<stdio.h>
void main() {
int a[][4] = {{76,76,58,67},{88,79,87,69},{98,78,78,97}};
int * search(int (*p)[4]);
int * p;
int i,j;
for(i= 0; i < 3; i++) {
p= search(a+i);
if(p== *(a+i)) {
printf("No:%dscrores:",i);
for(j = 0; j < 4; j++)
printf("%d",*(p+j));
printf("\n");
}
}
}
int * search(int (*p)[4]) {
inti,*pt;
pt= *(p + 1); //把pt指向本行末尾,用pt作为区分有无不及格课程的标志。若有,就让pt指向本行0列元素,否则指向本行末尾。
for(i= 0; i < 4; i++) {
if(*(*p+i)< 60)
pt= *p;
}
returnpt;
}
文章链接:/article/11771774.html
相关文章推荐
- 转:关于函数指针数组与返回数组指针的函数
- c语言指向函数的指针和返回指针的函数
- 对引用和指针使用以及函数返回引用和指针类型的理解
- C/C++函数返回二维数组指针问题
- C语言fopen()函数:打开一个文件并返回文件指针
- STL源码剖析 -- 返回函数指针的函数
- 【C语言】14-返回指针的函数与指向函数的指针
- 返回函数指针类型的函数
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- 返回指针的函数
- C语言中函数返回数组;数组与指针的区别
- 20返回指针的函数与指向函数的指针
- 函数返回类型为指针类型时的一些问题
- 如果从函数中返回局部变量的地址,引用或者指针的形式,则变量类型必须是静态的或者常量,即不在栈中存储
- 提高篇 返回指针的函数
- C语言——指针型函数(返回指针值得函数)
- 使用指针做函数返回值和指针(栈内存与堆内存的函数形式使用)
- 利用函数 分配空间,返回指针
- C++---从函数返回指针
- 函数返回指针