0
点赞
收藏
分享

微信扫一扫

作业随笔-指针

指针数组

数组指针

函数指针

二维数组传参

函数指针传参

函数指针解引用,调用

指向函数指针的指针


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
/*
int main()
{
	int arr[5];//arr是一个5个元素的整型数组
	int* parr1[10];//parr1是一个数组,数组有10个元素,每个元素的类型都是int*,parr1是指针数组
	int (*parr2)[10];//parr2是一个指针,该指针指向了一个数组,数组有10个元素,每个元素的类型是int,parr2是数组指针
	int(*parr3[10])[5];//parr3是一个数组,该数组有10个元素,每个元素是一个数组指针,
	                   //该数组指针指向的数组有5个元素,每个元素是int
	                   //【】优先级更高  
	return 0;
}
*/

/*
//二维数组传参
void test(int arr[3][5])
{}
void test1(int arr[][5])//行可以省略
{}
void test2(int (*arr)[5])//传地址
{}

int main()
{
	int arr[3][5] = {0};
	test(arr);
	test1(arr);
	test2(arr);
	return 0;
}
*/
/*
//二级指针传参
void test(int **p)
{}
int main()
{
	int* ptr();
	int** pp = &ptr;
	test(&ptr);
	test(pp);
	int* arr[10];
	test(arr);//指针数组也可以

	return 0;
}
*/
/*
//函数指针
void Print(char* str)
{
	printf("%s\n", str);
}
int main()
{
	void (*p)(char*) = Print;
	(*p)("hello bit");
	return 0;
}
*/
/*
int Add(int x, int y)
{
	int z = 0;
	z = x + y;
	return z;
}

int main()
{
	int a = 10;
	int b = 20;
	
	//int ret = Add(a, b);
	int(*pa)(int, int) = Add;
	//printf("%d\n", ret);
	printf("%d\n", pa(5,10));
	printf("%d\n", (*pa)(5, 10));
	return 0;
}
*/
int Add(int x, int y)
{
	int z = 0;
	z = x + y;
	return z;
}
int Sub(int x, int y)
{
	int z = 0;
	z = x - y;
	return z;
}
int Mul(int x, int y)
{
	int z = 0;
	z = x * y;
	return z;
}
int Div(int x, int y)
{
	int z = 0;
	z = x / y;
	return z;
}
int main()
{
	int* arr[5];
	//需要一个数组,这个数组可以存放4个函数的地址,函数指针的数组
	int(*pa)(int, int) = Add;//也可以存放其他函数
	int(*parr[4])(int, int) = { Add,Sub,Mul,Div };//函数指针的数组
	int i = 0;
	for (i = 0; i < 4; i++)
	{
		printf("%d\n", parr[i](5, 2));
	}

	return 0;
}





举报

相关推荐

0 条评论