//一级指针如何传参
//void print(int* ptr,int sz)
//{
// int i = 0;
// for (i = 0; i < sz; i++)
// {
// printf("%d ", *(ptr + i));
// }
//}
//
//void test(char* p)
//{
//
//}
//
//int main()
//{
// int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
// int* p = arr;
// int sz = sizeof(arr) / sizeof(arr[0]);
// print(p, sz);//p是一级指针
// char ch = 'w';
// char* p1 = &ch;
// test(&ch);//char*
// test(p1);
// return 0;
//}
//数组指针:指向数组的指针
// int(*P)[4]
二级指针传参
//
//void test(int** p2)
//{
// **p2 = 20;
//}
//
//int main()
//{
// int a = 0;
// int* pa = &a;//一级指针
// int** ppa = &pa;//二级指针
// //把二级指针进行传参
// test(ppa);
// printf("%d", a);
//
// return 0;
//}
//函数指针:指向函数的指针,存放函数地址的指针
//int add(int x, int y)
//{
// return x + y;
//}
//
//int main()
//{
// int a = 10;
// int* pa = &a;
//
// char ch = 'w';
// char* pc = &ch;
//
// int arr[10] = { 0 };
// int(*parr)[10] = &arr;
//
// //函数指针:指向函数的指针,存放函数地址的指针
// //&函数名 - 取到的就是函数的地址
// //函数名 == &函数名
// /*printf("%p", &add);
// printf("%p", add);*/
// int (*pf)(int, int) = &add;//pf就是一个函数指针变量
//
// return 0;
//}
//void test(char* str)
//{
//
//}
//int main()
//{
// void (*pt)(char*) = &test;
// return 0;
//
//}
int add(int x, int y)
{
return x + y;
}
int main()
{
/*int (*pf)(int, int) = &add;*///pf就是一个函数指针变量
int (*pf)(int, int) = add;//add == pf
/*int ret = (*pf)(3, 5);*/
//int ret = add(3, 5);
int ret = pf(3, 5);
printf("%d", ret);
return 0;
}