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)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.显示宽度并不限制可以在列内保存的值的范围,也不限制超过 ...
随机推荐
- C#通过编程方式实现Ping
代码是照着书敲的,贴出来方便平时参考 using System; using System.Collections.Generic; using System.Linq; using System.T ...
- 五种开源协议的比较(BSD_Apache_GPL_LGPL_MIT)
现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetic ...
- The AndroidManifest.xml File
manifest (船运的)载货清单 http://www.android-doc.com/guide/topics/manifest/manifest-intro.html Every applic ...
- Android实现控件动画效果
MainActivity.java public class MainActivity extends AppCompatActivity { private ImageView iv; privat ...
- Java中Comparable和Comparator实现对象比较
1.通过Comparable实现排序 package Comparable; import java.util.Arrays; public class ComparableUser implemen ...
- topo排序 + 用邻接表优化后的
输入数据: 4 61 21 32 33 42 44 2 4 61 21 32 33 42 41 2 topo排序为偏序: #include<stdio.h> #include<que ...
- (9)UI(容器)
1.基础容器 基础容器可以设置子容器布局.是否裁切子元素.填充颜色.背景图片资源等属性. 使用场景. 在官方示例中,大量使用了基础容器作布局管理,如下面的主界面中,用户名称,钻石和金币就使 ...
- ZeroMQ(java)之I/O线程的实现与组件间的通信
算是开始读ZeroMQ(java)的代码实现了吧,现在有了一个大体的了解,看起来实现是比较的干净的,抽象什么的不算复杂... 这里先来看看它的I/O线程的实现吧,顺带看看是如何实现组件的通信的.... ...
- HM必修1
高中数学必修一 笔记与拓展 1. 集合与函数概念 集合概念 集合是一个基本的数学概念. 集合是由集合的元素构成的. 当且仅当两个集合中包含着完全相同的元素且都不包含其它元素时两个集合相等. 集合是确定 ...
- XPath学习:轴(3)——descendant
XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointe ...