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)()的区别的更多相关文章

  1. Convert.ToInt32()、int.Parse()和(int)三者的区别

    Convert.ToInt32将object类类型转换成int类型,如Convert.ToInt32(session["shuzi"]); (int)适合简单数据类型之间的转换: ...

  2. C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

    转自:http://www.cnblogs.com/leolis/p/3968943.html 在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为 整型(int)来讲, ...

  3. C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别 <转>

    作者:Statmoon 出处:http://leolis.cnblogs.com/   在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为整型(int)来讲,有四种方法 ...

  4. (int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

    C#中(int).int.Parse().int.TryParse()和Convert.ToInt32()的区别   原文链接:http://www.cnblogs.com/leolis/p/3968 ...

  5. mysql int(3)与int(11)的区别

    总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果i ...

  6. const int *p与int *const p的区别(转:csdn,suer0101)

    本文只是一篇学习笔记,是看了<彻底搞定C指针>中的相关篇幅后的一点总结,仅此而已! 一.先搞清const int *p与int const *p的区别 它们的区别就是:没有区别!! 无论谁 ...

  7. Mysql数据库int(1)和tinyint(1)的区别&&扩展阅读

    转自:http://blog.csdn.net/phpwish/article/details/7845921 今天看项目的数据库结构设计,发现一个奇怪的地方. `xxx_detail`   `del ...

  8. new int[]和new int()的区别

    1. new int[] 是创建一个int型数组,数组大小是在[]中指定,例如:int * p = new int[10]; //p执行一个长度为10的int数组.2. new int()是创建一个i ...

  9. C#中Convert.ToInt32、int.TryParse、(int)和int.Parse四者的区别

    Convert.ToInt32.(int)和int.Parse三者的区别: 首先:Convert.ToInt32 适合将object类类型转换成int类型,如Convert.ToInt32(sessi ...

  10. int(1)和int(11)是否有区别?

    MySQL类型关键字后面的括号内指定整数值的显示宽度(例如,INT(11)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.显示宽度并不限制可以在列内保存的值的范围,也不限制超过 ...

随机推荐

  1. window自动切换ip的脚本

    因为总要切换ip,所以百度了一下脚本 如下http://jingyan.baidu.com/article/d2b1d1029d21b95c7e37d4fa.html 动态ip netsh inter ...

  2. Laravel 5.3 中文文档翻译完成

    经过一个多月的紧张翻译和校对,翻译完成.以下是参与人员: Laravel 5.3 中文文档翻译完成 稿源:七星互联www . qixoo.com 文档地址在此:https://laravel-chin ...

  3. PHP防止重复提交表单(helloweba网站经典实例)

    <?php session_start(); header("Content-Type:text/html;charset:utf8"); function set_toke ...

  4. https://github.com/yrs244742688/GeneratePemWithMoAndEx RSA加密

    <RSAKeyValue> <Modulus> xA7SEU+e0yQH5rm9kbCDN9o3aPIo7HbP7tX6WOocLZAtNfyxSZDU16ksL6 Wjuba ...

  5. CentOS 7 firewalld使用简介

    1.firewalld简介 firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务:第二个就是加入了防火墙的“zone”概念   firewalld有图形界面和工具 ...

  6. 关于31天App教程示例中一些因SDK版本而出现的问题(转)

    由于国外那个知名的31天案例教程比较老,所用官方API是2008年时的2.X,所以在现在的Xcode3-4之后或多或少都有编译警告和错误信息.必须做些适应iOS版本的代码更改才能顺利编译通过. Day ...

  7. [转] Android PhoneGap Cordova 体系结构

    说明: 本文档只针对Cordova(PhoneGap)的Android端,基于Cordova2.1.0版本. 一.总体结构 Cordova的目标是用HTML,JS,来完成手机客户端的开发,并且是只开发 ...

  8. Apache prefork 模块指令分析

    问题背景: 在一台只有内存的vps上安装directadmin之后经常内存耗,经过查看之后发现Apache成了罪魁祸首急速消耗内存SWAP剩余空间都是0,最终导致内核开始大下杀手,把MySQL都杀了, ...

  9. django程序报错CSRF verification failed. Request aborted.

    django程序的html页面中form的method='post'的时候报错 Forbidden (403) CSRF verification failed. Request aborted.He ...

  10. error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”

    error: vtkCommon.lib(vtkSmartPointerBase.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不 ...