指针数组
#include<iostream>
using namespace std;
void main()
{
int a[10] = { 0 };//a代表的是数组首元素的地址 &a代表整个数组的地址 a+1 4 &a+1 步长 40
typedef int(Myarray01)[10];
typedef int(Myarray02)[100];//此为数据类型
Myarray02 Myarray;
/*for (int i = 0; i < 100; i++)
{
Myarray[i] = 1;
printf("%10d", Myarray[i]);
}
{
typedef int(*PtypeArray)[10];
PtypeArray myPArray;//sizeof(int)*10
myPArray = &a;
(*myPArray)[0] = 10;
cout << "a[0]:" << a[0] << endl;
cout << myPArray << endl;
}
{
//定义一个指向 数组类型的指针 数组类的指针
int(*MyPoint)[10];
MyPoint = &a;
(*MyPoint)[0] = 40;
printf("a[0]:%d\n", a[0]);
}
}
函数指针
#include<iostream>
using namespace std;
int add(int a, int b)
{
printf("func,add............%d\n",a+b);//直接调用 函数名就是函数的入口地址
return a+b;
}
void main()
{
add(1, 2);
{
typedef int(MyFuncType)(int a, int b); //定义了一个类型
MyFuncType *myPointerFunc = NULL; //定义了一个指针
myPointerFunc = &add;//细节
myPointerFunc(3, 4);//间接调用
myPointerFunc = add; //C 过程 兼容历史版本的原因
myPointerFunc(3, 4);//间接调用
//定义一个函数指针类型
{
typedef int(*MypointFuncType)(int a, int b);
MypointFuncType MypointFunc;
MypointFunc = &add;
MypointFunc(7, 8);
MypointFunc = add;
MypointFunc(7, 8);
}
//函数指针
{
int(*Mypont)(int a, int b);
Mypont = add;
Mypont(1, 2);
}
}
}
函数指针的剖析
#include<stdio.h>
#include<iostream>
using namespace std;
int myadd(int a, int b)
{
printf("func add() do...\n");
return a + b;
}
int myadd1(int a, int b)
{
printf("func add1() do...\n");
return a - b;
}
int myadd2(int a, int b)
{
printf("func add2() do...\n");
return a * b;
}
int myadd3(int a, int b)
{
printf("func add3() do...\n");
return a / b;
}
//定义一个函数指针类型
typedef int(*MyTypeFuncAdd)(int a, int b);
//函数指针类型起到的作用 把函数的参数,函数返回值类型提前约定
int MainOp1(MyTypeFuncAdd myFuncAdd)
{
int c=myFuncAdd(5, 6);
return c;
}
int MainOp2(int(*MyPointerFuncAdd)(int a, int b))//变量
{
int c=MyPointerFuncAdd(5, 6);
return c;
}
//间接调用
void main()
{
MyTypeFuncAdd myFuncAdd = NULL;
myadd(1, 2);
myFuncAdd = myadd;
myFuncAdd(3, 4);//间接调用
MainOp1(myadd);
MainOp2(myadd);
//在mainop框架 没有发生任何变化的情况下....
MainOp1(myadd1);
MainOp1(myadd2);
}