指针数组、数组指针、指针函数、函数指针
来源:互联网 发布:java字符串拼接函数 编辑:程序博客网 时间:2024/06/03 13:13
C++中容易混淆的几个基础概念:
1、指针数组:元素为指针的数组(整型数组)
2、数组指针:指向数组的指针(指向数组首地址的指针)
3、指针函数:返回值为指针的函数(整型函数)
4、函数指针:指向函数入口地址的指针(每个函数都有一个类似于main()的入口地址)
下例只要看下定义,然后运行下程序简单的看下就明白了区别,把“指针”换成“整型”就不会搞混了
指针数组:
// FunctionPointArray.cpp : 定义控制台应用程序的入口点。
//函数指针数组:
//是一个数组
//数组元素是指向一个函数入口地址的指针
// FunctionPointArray.cpp : 定义控制台应用程序的入口点。
//函数指针数组:
//是一个数组
//数组元素是指向一个函数入口地址的指针
#include "stdafx.h"
#include <iostream>
#include <iostream>
using namespace std;
int max(int x, int y){return x>y?x:y;}
int min(int x, int y){return x<y?x:y;}
int min(int x, int y){return x<y?x:y;}
int (*nP)(int, int);
int (*nPointArr[2])(int, int); //函数指针数组
typedef int (*nF)(int, int)
typedef int (*nFunArr[2])(int, int)
int (*nPointArr[2])(int, int); //函数指针数组
typedef int (*nF)(int, int)
typedef int (*nFunArr[2])(int, int)
int main()
{
nP = max;
int nMax = nP(5,6);
cout << "Function Point:" << nMax << endl;
nF minPoint = min;
int nMin = minPoint(5,6);
cout << "typedef Function Point:" << nMin << endl;
nPointArr[0] = min;
nPointArr[1] = max;
{
nP = max;
int nMax = nP(5,6);
cout << "Function Point:" << nMax << endl;
nF minPoint = min;
int nMin = minPoint(5,6);
cout << "typedef Function Point:" << nMin << endl;
nPointArr[0] = min;
nPointArr[1] = max;
cout << "Function Point Arr Min Value:" << nPointArr[0](1,2) << endl;
cout << "Function Point Arr Max Value:" << nPointArr[1](1,2) << endl;
cout << "Function Point Arr Max Value:" << nPointArr[1](1,2) << endl;
nFunArr FunArr;
FunArr[0] = max;
FunArr[1] = min;
FunArr[0] = max;
FunArr[1] = min;
cout << "typedef Function Point Arr Max Value:" << FunArr[0](1,2) <<endl;
cout << "typedef Function Point Arr Min Value:" << FunArr[1](1,2) <<endl;
cout << "typedef Function Point Arr Min Value:" << FunArr[1](1,2) <<endl;
return 0;
}
}
数组指针:也称行指针。
定义:int (*p)[n],首先p是一个指针,指向整型一维数组,一维数组的长度是n,n亦是
p的步长,即执行p+1要跨过n个整型长度
#include "stdafx.h"
#include <iostream>
#include <iostream>
using namespace std;
int main()
{
int (*p)[4];
int arr[3][4] = {{1,2,3,4}{4,5,6,7}{5,6,7,8}};
p = arr;
cout << "The Point first num:" << (*p)[0] << endl;
{
int (*p)[4];
int arr[3][4] = {{1,2,3,4}{4,5,6,7}{5,6,7,8}};
p = arr;
cout << "The Point first num:" << (*p)[0] << endl;
p += 1;
cout << "Aftef p+1 the Point first num:" << (*p)[0] << endl;
return 0;
}
可以得出的输出结果:
The Point first num:1
After p+1 the Point first num:4
cout << "Aftef p+1 the Point first num:" << (*p)[0] << endl;
return 0;
}
可以得出的输出结果:
The Point first num:1
After p+1 the Point first num:4
指针函数:
// PointFunction.cpp : 定义控制台应用程序的入口点。
//指针函数:返回类型是指针的函数
// PointFunction.cpp : 定义控制台应用程序的入口点。
//指针函数:返回类型是指针的函数
#include "stdafx.h"
#include <iostream>
#include <iostream>
using namespace std;
int *fun(int x, int y)
{
int nMax = (x>y?x:y);
int *nP = &nMax;
return nP;
}
{
int nMax = (x>y?x:y);
int *nP = &nMax;
return nP;
}
int main()
{
int m = 1, n = 9;
int *nQ = fun(m, n);
cout << *nQ << endl;
return 0;
}
{
int m = 1, n = 9;
int *nQ = fun(m, n);
cout << *nQ << endl;
return 0;
}
函数指针:
// FuctionPoint.cpp : 定义控制台应用程序的入口点。
/*
int fun(int x, int y);
int (*f)(int, int);
f = fun;
*/
// FuctionPoint.cpp : 定义控制台应用程序的入口点。
/*
int fun(int x, int y);
int (*f)(int, int);
f = fun;
*/
//函数指针可以改变指向的函数,但不存在++、--
#include "stdafx.h"
#include <iostream>
#include <iostream>
using namespace std;
typedef int (*nfunc)(int ,int);
int max(int x, int y){return x>y?x:y;}
int (*mP)(int, int);
int (*mP)(int, int);
int main()
{
mP = max;
int nMax = mP(1,2);
nfunc funPoint = max;
int nNum = funPoint(4,5);
{
mP = max;
int nMax = mP(1,2);
nfunc funPoint = max;
int nNum = funPoint(4,5);
cout << nMax << endl;
cout << nNum << endl;
return 0;
}
cout << nNum << endl;
return 0;
}
0 0
- 指针,指针数组,数组指针,函数指针
- 函数指针指针数组
- 数组指针、函数指针
- 指针&数组&函数指针
- 函数指针数组指针!
- 指针数组,数组指针,函数指针,指针函数,多级指针
- 函数指针/函数指针数组
- 函数指针,函数指针数组
- 函数指针、指针数组与数组指针
- 解析 指针数组,数组指针,函数指针
- 函数指针、数组指针、指针数组
- 函数指针,数组指针,指针数组
- C++指针数组、数组指针、函数指针
- 函数指针,指针数组和数组指针
- 数组指针,指针数组和函数指针
- 指针数组 数组指针 函数指针 函数指针数组
- 理解数组指针、指针数组、函数指针、函数指针数组
- 函数指针,函数指针数组,函数指针数组的指针
- 关于nand flash上实现jffs2文件系统的学习
- 中文命名实体识别
- Nginx动态加载新的配置文件
- cocos2d-x中各种诡异BUG的一个原因
- [shell] sleep
- 指针数组、数组指针、指针函数、函数指针
- mahout基于hadoop的推荐引擎代码分析
- 牛蔚-移动互联网下的自媒体
- c#winform学习(一)
- 查看文件的block size
- Java图片缩放类
- 一个nginx启动关闭重启的shell脚本
- 转载---如何写面向互联网公司的求职简历
- java 生成指定范围的随机日期