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)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.显示宽度并不限制可以在列内保存的值的范围,也不限制超过 ...
随机推荐
- Linux cscope命令
一.简介 Cscope 是一款开源免费的 C/C++浏览工具,自带一个基于文本的用户界面,通过cscope可以很方便地找到某个函数或变量的定义位置.被调用的位置等信息.Cscope对 C /C++支持 ...
- Jquery+Ajax+Json的使用(微信答题实例)
—————————————————————TP框架下的方法————————————————————————
- WPF TreeView绑定字典集合
<TreeView Name="Tree" HorizontalAlignment="Left" Height="269" Width ...
- WPF RichTextBox的使用总结
RichTextBox内容模型 RichTextBox 支持基于块的内容模型. RichTextBox 的内容属性为 Blocks,这是 Paragraph 元素的集合Paragraph元素可包含 ...
- System.gc()与Object.finalize()的区别
finalize()是由JVM自动调用的,你可以用System.gc(),但JVM不一定会立刻执行,JVM感觉内存空间有限时,才会开始执行finalize(),至于新的对象创建个数和被收集个数不同是因 ...
- iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
在IOS7中设置applicationIconBadgeNumber不会有什么问题,但是直接在IOS8中设置applicationIconBadgeNumber会报错.因为在IOS8中要想设置appl ...
- [bug]使用SharpZipLib遇到中文名称乱码问题
写在前面 业务逻辑是这样的,需要导出一个app的话题,并需要把该话题下帖子的附件导出,然后需求想修改成人员的名称.jpg的格式.所以就出现了中文乱码的问题.在本地没问题,但发布到服务器上面就出问题,每 ...
- 转 Xenserver HVM is required for this operation的解决办法
今天在XenServer中安装虚拟机时出现如下错误: 原因:没有开启XenServer服务器主机的虚拟化支持功能 解决办法:在XenServer主机的BIOS里开启CPU的虚拟化支持功能 本文出自 “ ...
- JavaScript 实现鼠标拖动元素
一.前言 最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.f ...
- html 特殊字符 fmt table A
html 特殊字符 “&”表示“&” “ ”表示空格 <fmt:bundle basename=""> basename制定配置文件的文件名,无须扩展名 ...