0
点赞
收藏
分享

微信扫一扫

关于指针:

1.voidp:p可以接受任意类型的地址。void类型的指针不能进行解引用操作。

2.指针数组: int p[5];是一个数组,每个元素是int 

数组指针: int (*p)[5]:是一个指针,指向一个5个元素类型是int的数组。

函数指针:void (*p)(int,int):指向一个void类型参数 是(int,int)的函数。

3.


void add(int x, int y) {
	printf("%d\n", x + y);
}
void del(int x, int y) {
	printf("%d\n", x - y);
}
void mul(int x, int y) {
	printf("%d\n", x * y);
}
void div(int x, int y) {
	printf("%d\n", x / y);
}

void Cal(void (*p)(int,int)) {
	int x = 0;
	int y = 0;
	printf("请输入2个数");
	scanf("%d%d", &x,&y);
	p(x,y);
}

int input = 0;
	do
	{
		printf("请输入1个数");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			Cal(add);
			break;
		case 2:
			Cal(del);
			break;
		case 3:
			Cal(mul);
			break;
		case 4:
			Cal(div);
			break;
		default:
			printf("输入错误");
			break;
		}
	} while (input);

4.学习库函数qsort(数组地址,数组大小,数组元素大小,cmp(比较函数))排序任意数组类型。

!!注意cmp比较函数是规定写法:int cmp(const void* e1,const void* e2)。

例子qsort排序结构体:

typedef struct stuent
{
	char name[20];
	int age;
}stu;

int cmp(const void* e1, const void* e2) {
	return  ((stu*)e1)->age - ((stu*)e2)->age;
}


----------main

stu s[3] = { {"张三",22},{"李四",21},{"王五",20} };
int sz = sizeof(s) / sizeof(s[0]);
qsort(s, sz, sizeof(s[0]),cmp);
for (int i = 0; i < sz; i++)
{
	printf("%s", s[i].name);
	printf("%d\n", s[i].age);

}





举报

相关推荐

0 条评论