#include<stdio.h>
#include<string.h>
#include<stdlib.h>
// 数组指针 语法 梳理
//
//int a[10];//
//
int add(int a, int b)
{
return a + b;
}
int main()
{
int a[10]; //a代表的是数组首元素的地址 &a代表整个数组的地址 a+1的步长为4 &a+1步长=40 .
//定义一个数组类型
{
typedef int (myTypeArray)[10];
myTypeArray Myarray;
Myarray[0] = 10;
}
//定义一个指针数组类型
{
typedef int(*PTypeArray)[10];
PTypeArray myPArray;
myPArray = a;
//myPArray[0] = 20; 这句话是错误的,因为myPArray相当于二级指针,它是指向一个数组的指针
(*myPArray)[0] = 20;
}
//定义一个指向 数组类型的指针 数组类的指针
{
int(*mypointer)[10];
mypointer = a;
(*mypointer)[0] = 21;
printf("%d\n", a[0]);
}
//函数指针语法梳理
//1 如何定义一个函数类型
//2 如何定义一个函数指针类型
//3 如何定义一个 函数指针 (指向一个函数的入口地址)
//1 如何定义一个函数类型
int temp;
{
typedef int (MyTypeFuc)(int a, int b);
MyTypeFuc *myfunc;
myfunc = add;
temp= myfunc(2, 4);
printf("temp= myfunc(2, 4)===>%d\n", temp);
}
// 2 如何定义一个函数指针类型
{
typedef int(*MyPTypeFunc)(int a, int b);
MyPTypeFunc myPfunc;
myPfunc = add;
temp=myPfunc(4, 6);
printf("temp=myPfunc(4, 6)===>%d\n", temp);
}
//3 如何定义一个 函数指针 (指向一个函数的入口地址)
{
int(*MyPFunc)(int a, int b);
MyPFunc = add;
temp=MyPFunc(3, 6);
printf("temp=MyPFunc(3, 6)===>%d\n", temp);
}
system("pause");
}
这里的加了typedef 和没有加的区别就是:加了则定义一种类型,没加则是代表的一种表现的形式。