指针 函数指针

原创 2013年12月02日 15:43:13

总结如下:

#include <iostream>
#include <iomanip>
using namespace std;

int Func(int a)	 {	int b=a;cout<<"Func   ";    return b;}
int Func1(int a) {	int b=a;cout<<"Func1  ";	return b;}
int Func2(int a) {	int b=a;cout<<"Func2  ";	return b;}
int Func3(int a) {	int b=a;cout<<"Func3  ";	return b;}
int Func4(int a) {	int b=a;cout<<"Func4  ";	return b;}
int Func5(int a) {	int b=a;cout<<"Func5  ";	return b;}
int Func6(int a) {	int b=a;cout<<"Func6  ";	return b;}
int Func7(int a) {	int b=a;cout<<"Func7  ";	return b;}
int Func8(int a) {	int b=a;cout<<"Func8  ";	return b;}
int Func9(int a) {	int b=a;cout<<"Func9  ";	return b;}
int Func10(int a){	int b=a;cout<<"Func10 ";	return b;}

void main()
{
	int intData;		// 一个整型数
	int *pintData;		// 一个指向整型数的指针
	int **ppintData;	// 一个指向指针的指针,它指向的指针指向一个整型数

	int intArray[10];					// 一个有10个整型数的数组
	int *intArray_IndexpintData[10];	// 一个有10个指针的数组,内个指针对应指向一个整型数
	int (*pintArray)[10];				// 一个指向有10个整型数数组的指针

	int (*pFunc)(int);						// 一个指向函数的指针,该函数有一个整形参数并返回一个整型数
	int (*intArray_IndexpFunc[10])(int);	// 一个有10个指针的数组,每个指针对应指向一个函数,该函数有一个整形参数并返回一个整型数

	intData=5;
	pintData=&intData;
	ppintData=&pintData;
	cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<<   ppintData <<endl<<endl;
	cout<<setw(10)<<&intData<<setw(10)<<&pintData<<setw(10)<<  &ppintData <<endl<<endl;
	cout<<setw(10)<<intData <<setw(10)<<*pintData<<setw(10)<<  *ppintData <<endl<<endl;
	cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<< &*ppintData <<endl<<endl;
	cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<<&(*ppintData)<<endl<<endl;
	cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<< *&ppintData <<endl<<endl;
	cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<<*(&ppintData)<<endl<<endl;

	for(int i=0;i<10;i++){	intArray[i]=i;	cout<<setw(10)<<intArray[i]<<" ";}
	cout<<endl<<endl;
	for(int j1=0;j1<10;j1++){	intArray_IndexpintData[j1]=&intArray[j1];
								cout<<setw(10)<<intArray_IndexpintData[j1]<<" ";	}
	cout<<endl<<endl;
	for(int j2=0;j2<10;j2++){	cout<<setw(10)<<intArray_IndexpintData[j2]<<" ";	}
	cout<<endl<<endl;
	for(int j3=0;j3<10;j3++){	cout<<setw(10)<<intArray_IndexpintData[j3]<<" ";	}
	cout<<endl<<endl;
	for(int j4=0;j4<10;j4++){	cout<<setw(10)<<intArray_IndexpintData[j4]<<" ";	}
	cout<<endl<<endl;
	
	
	pintArray=&intArray;
	pFunc=Func;
	cout<<setw(10)<<pFunc(12)<<endl;
	intArray_IndexpFunc[1]=Func1;intArray_IndexpFunc[2]=Func2;intArray_IndexpFunc[3]=Func3;intArray_IndexpFunc[4]=Func4;
	intArray_IndexpFunc[5]=Func5;intArray_IndexpFunc[6]=Func6;intArray_IndexpFunc[7]=Func7;intArray_IndexpFunc[8]=Func8;
	intArray_IndexpFunc[9]=Func9;intArray_IndexpFunc[10]=Func10;
	cout<<setw(10)<<intArray_IndexpFunc[1](1)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[2](2)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[3](3)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[4](4)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[5](5)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[6](6)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[7](7)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[8](8)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[9](9)<<endl;
	cout<<setw(10)<<intArray_IndexpFunc[10](10)<<endl;
cout<<endl<<endl;
fflush(stdin);       // 清空缓冲区
	int bianliang1,bianliang2;
	bianliang1=pFunc(22);
//	bianliang2=intArray_IndexpFunc[10](234);
	cout<<setw(8)<<bianliang1<<endl;
//	cout<<setw(8)<<bianliang2<<endl;
}
运行时的结果如下:



下面看一下指针函数

函数的返回值为指针类型则命名的函数就叫指针函数

#include<iostream>
using namespace std;

int * GetDate(int wk,int dy);

void main()
{
	int week,weekPos;
	do
	{
		printf("Enter week(1-5)weekPos(1-7)\n");
		scanf("%d%d",&week,&weekPos);
	}
	while(week<1||week>5||weekPos<1||weekPos>7);
	cout<<"第"<<week<<"周"<<"星期"<<weekPos<<" 是:  ";
	printf("%d",*GetDate(week,weekPos));
	cout<<"号"<<endl;
}

int * GetDate(int IndexRow,int IndexColumn)
{
	static int calendar[5][7]=
	{
		{1,2,3,4,5,6,7},
		{8,9,10,11,12,13,14},
		{15,16,17,18,19,20,21},
		{22,23,24,25,26,27,28},
		{29,30,31,-1}
	};
	return &calendar[IndexRow-1][IndexColumn-1];
}
运行的结果如下:



版权声明:开放

指针函数与函数指针--两个简单例子进行说明

一直都对两个概念有所混淆--指针函数与函数指针,下面我们通过两个例子来讲解一下 ------------------------------------------------------------...
  • u014131641
  • u014131641
  • 2016年04月09日 14:44
  • 2967

linux C编程(五)函数指针与函数调用

函数指针函数指针,首先是一个指针,只不过该指针指向的是函数,而不是变量。#include int max(int x,int y) { return (x>y)?x:y; } int main()...
  • u012177034
  • u012177034
  • 2016年08月25日 22:45
  • 1247

C#中的函数指针(转)

函数指针也叫指向函数的指针,它是为了提高函数的通用性而引入的。比较传统的方法是在函数中增加参数,通过增加的参数来判断到底要用什么函数,这样的缺点是灵活性差,为了支持多种方法要在函数中要写很多分支判断语...
  • dragoo1
  • dragoo1
  • 2016年11月05日 11:00
  • 2274

Go语言学习六:指针与传递到函数的指针

package main import ( "fmt" ) const MAX int = 3 func main() { var a int = 20 var ip *int /* 声明...
  • shawncheer
  • shawncheer
  • 2016年03月30日 20:23
  • 713

函数指针和函数指针数组及其应用

1. 函数指针 先来看一个简单的例子。 int a=3; void *p=&a; 这是一个基础的不能再基础的例子。相信学过指针的都能看得懂。P是一个指针,指向a。a 是一个整形变量。 函数指针和其类似...
  • yuexiang321
  • yuexiang321
  • 2016年09月25日 11:07
  • 1871

C/C++函数指针用法总结

C++函数指针 一函数指针介绍   函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下: int add(int nLeft,int nRight);//...
  • u013507368
  • u013507368
  • 2014年12月02日 16:48
  • 687

函数指针,指针函数,返回值为指针的函数

在学习C语言时,一个比较容易混淆的概念就是函数指针、指针函数、返回值为指针的函数。本文将对这三个概念进行区分。指针函数就是返回值为指针的函数,两个本质上是同一事物,只是叫法不同。函数指针就是一个指向函...
  • wangxufa
  • wangxufa
  • 2017年06月08日 21:23
  • 617

函数指针的作用以及好处

//函数指针使用的例子#include #include char * fun(char * p1,char * p2) {   int i = 0;   i = strcmp(p1,p2);...
  • windyblankboy
  • windyblankboy
  • 2016年08月21日 00:44
  • 1857

关于函数返回值为指针类型的分析

先看一个例子,这是初学者经常遇到的问题 char *GetString(void) {  char p[] = "hello world";  return p; //编译器一般将提出警告...
  • zxccaoya
  • zxccaoya
  • 2016年12月05日 18:58
  • 5294

js中神奇的函数指针

js中的函数指针是一个神奇的东西 定义function check(){};对于上面这个函数,check(函数名)就是函数指针,check指向函数主体,如果alert(ckeck),那么弹出的信...
  • l7945685
  • l7945685
  • 2016年08月15日 10:16
  • 1863
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指针 函数指针
举报原因:
原因补充:

(最多只允许输入30个字)