int *p()与int (*p)()的区别
int *p()是返回指针的函数
int (*p)()是指向函数的指针
返回指针的函数:
int *a(int x,int y);
有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string.h>
using namespace std;
#define NOCLASS 4
float *search(float (*pointer)[NOCLASS], int iter);
int main(int argc, char* argv[])
{
float score[][NOCLASS] = {{,,,}, {,,,}, {,,,}, {,,,},{,,,},{,,,}}; float *p;
int m;
while()
{
printf("enter the number of student:");
scanf("%d", &m);
printf("the scores of No.%d are:\n", m);
p = search(score, m);
for (int i = ; i < NOCLASS; ++i) {
//请思考Line22和Line35为什么不一样呢, 一维与二维
printf("%5.2f\t", *(p+i));
printf("p+i:%#x\n",p+i);
}
printf("\n");
}
return ;
} //数组指针,是一个指针,指向一个数组,相当于二位数组,n*4,int,int,int,int
float *search(float (*pointer)[NOCLASS], int iter)
{
float *pt;
printf("pointer:%#x\n", pointer);
pt = *(pointer + iter);//*(*(p+iter)+0)) = *(*(p+iter))
printf("pt:%#x\n", pt);
return (pt);
}
指向函数的指针
实参函数名 f1 f2
↓ ↓
void sub(int (*x1)(int),int (*x2)(int,int))
{ int a,b,i,j;
a=(*x1)(i); /*调用f1函数*/
b=(*x2)(i,j);/*调用f2函数*/
…
}
例:设一个函数process,在调用它的时候,每次实现不同的功能。输入a和b两个数,第一次调用process时找出a和b中大者,第二次找出其中小者,第三次求a与b之和。
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
void process(int, int, int (*func)(int, int));
int max(int x, int y);
int min(int, int);
int add(int, int);
int main(int argc, char* argv[])
{
int x = , y = ;
printf("max is:");
process(x, y, max);
printf("min is:");
process(x,y, min);
printf("add is:");
process(x, y, add);
return ;
}
void process(int x, int y, int (*func)(int, int))
{
int result;
result = (*func)(x,y);
printf("%d\n", result);
}
int max(int x, int y){
return (x>y?x:y);
}
int min(int x, int y){
return (x<y?x:y);
}
int add(int a, int b){
return (a+b);
}
2016-10-20 19:40:43
int (*a[10]) (int);这个是定义了一个函数指针数组,指向的函数类型是int func(int)
#include <iostream>
#include <stdio.h>
using namespace std; int func1(int n)
{
printf("func1: %d\n", n);
return n;
}
int func2(int n)
{
printf("func2: %d\n", n);
return n;
}
int main()
{
int (*a[])(int) = {NULL};
a[] = func1;
a[] = func2;
a[]();
a[]();
return ;
}
谁见过这种,某面试者出的,感觉糊弄人的,void (*(*func))(int)[10];
int *p()与int (*p)()的区别的更多相关文章
- Convert.ToInt32()、int.Parse()和(int)三者的区别
Convert.ToInt32将object类类型转换成int类型,如Convert.ToInt32(session["shuzi"]); (int)适合简单数据类型之间的转换: ...
- C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
转自:http://www.cnblogs.com/leolis/p/3968943.html 在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为 整型(int)来讲, ...
- C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别 <转>
作者:Statmoon 出处:http://leolis.cnblogs.com/ 在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为整型(int)来讲,有四种方法 ...
- (int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
C#中(int).int.Parse().int.TryParse()和Convert.ToInt32()的区别 原文链接:http://www.cnblogs.com/leolis/p/3968 ...
- mysql int(3)与int(11)的区别
总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果i ...
- const int *p与int *const p的区别(转:csdn,suer0101)
本文只是一篇学习笔记,是看了<彻底搞定C指针>中的相关篇幅后的一点总结,仅此而已! 一.先搞清const int *p与int const *p的区别 它们的区别就是:没有区别!! 无论谁 ...
- Mysql数据库int(1)和tinyint(1)的区别&&扩展阅读
转自:http://blog.csdn.net/phpwish/article/details/7845921 今天看项目的数据库结构设计,发现一个奇怪的地方. `xxx_detail` `del ...
- new int[]和new int()的区别
1. new int[] 是创建一个int型数组,数组大小是在[]中指定,例如:int * p = new int[10]; //p执行一个长度为10的int数组.2. new int()是创建一个i ...
- C#中Convert.ToInt32、int.TryParse、(int)和int.Parse四者的区别
Convert.ToInt32.(int)和int.Parse三者的区别: 首先:Convert.ToInt32 适合将object类类型转换成int类型,如Convert.ToInt32(sessi ...
- int(1)和int(11)是否有区别?
MySQL类型关键字后面的括号内指定整数值的显示宽度(例如,INT(11)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.显示宽度并不限制可以在列内保存的值的范围,也不限制超过 ...
随机推荐
- HDU2196computer(树上最远距离 + DP)
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- centos7 nginx用systemctl方式管理的脚本
vim /usr/lib/systemd/system/nginx.service [Unit] Description=nginx - high performance web server Doc ...
- Javascript动态调整文章的行距、字体、颜色,及打印页面和关闭窗口功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Random.nextint() 和Math.random()的区别
Random.nextint() 和Math.random()的区别 Java代码 Random rand = new Random(); long startTime = System.nano ...
- android-详解Android 6.0运行时权限
感谢郭神,从Android 6.0开始,不再是安装应用时用户确定获得全部的权限.而是在使用软件过程中需要该权限时,弹出对话框让用户选择权限.不仅如此,用户选择权限后还可以关闭. 检查是否获得权限 通过 ...
- 什么是Gn Gi Gb!
什么是Gn Gi Gb! 2013-08-24 23:58t百既3 | 浏览 776 次 2013-08-25 00:18 #“团队精英计划—个人高质赛ing!# 提问者采纳 答:这三个接口都是G ...
- 理解css中的line-height
在css中,line-height有下面五种可能的值:我们来看看w3c中列出如下可能值: normal:默认,设置合理的行间距. number:设置数字,此数字会与当前的字体尺寸相乘来设置行间距. l ...
- 获取window窗口大小
窗口大小 跨浏览器确定一个窗口的大小不是一件简单的事.IE9+.Firefox.Safari.Opera和Chrome均为此提供了4个属性:innerWidth.innerHeight.outerWi ...
- JavaScript 中 for in 循环和数组的问题
本文由 伯乐在线 - ElvisKang 翻译,进林 校稿.未经许可,禁止转载!英文出处:adripofjavascript.com.欢迎加入翻译小组. JavaScript的for…in循环用于迭代 ...
- 【风雪之隅】写在PHP7发布之际一些话 2015-12-02
做开源也有4,5年的时间了,从最初的 Yaf,到今天的 PHP7,我参与的项目越来越多,使用我代码的用户也越来越多,明天就要发布的PHP7,绝对是我从事开源以来的一个最重要里程碑,我应该纪念一下今天, ...