#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 和没有加的区别就是:加了则定义一种类型,没加则是代表的一种表现的形式。