数组的typedef 和函数的typedef

#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
", 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
", temp);
	}
	// 2 如何定义一个函数指针类型
	{
		typedef int(*MyPTypeFunc)(int a, int b);
		MyPTypeFunc  myPfunc;
		myPfunc = add;
		temp=myPfunc(4, 6);
		printf("temp=myPfunc(4, 6)===>%d
", temp);

	}
	//3 如何定义一个 函数指针  (指向一个函数的入口地址)
	{
		int(*MyPFunc)(int a, int b);
		MyPFunc = add;
		temp=MyPFunc(3, 6);
		printf("temp=MyPFunc(3, 6)===>%d
", temp);
	}
	system("pause");
}

  这里的加了typedef 和没有加的区别就是:加了则定义一种类型,没加则是代表的一种表现的形式。

原文地址:https://www.cnblogs.com/xiaochige/p/6699879.html