指针4,,,

1.二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址。

2.typedef

 (1) typedef unsigned int unit;

            unsigned int num  <==> unit num;

(2)typedef int * prin_t;

          int *p  <==> prin_t p;

 (3)typedef int (*pri_t)[6];

          int *p = &arr <==> pri_t  p;

(4)typedef int (*prin_t) (int ,int);

         int (*pf)(int ,int) = Add <==> prin_t pf = Add;

3.

size_t无符号整形

 4.

函数指针数组

#include <stdio.h>

void menu()

{

    printf("*****************************\n");

    printf("******1. Add******2. Sub*****\n");

    printf("******3. Mul******4. Div*****\n");

    printf("************0. exit**********\n");

    printf("*****************************\n");

    printf("*****************************\n");

}

int Add(int x,int y)

{

    return x + y;

}

int Sub(int x,int y)

{

    return x - y;

}

int Mul(int x,int y)

{

    return x * y;

}

int Div(int x,int y)

{

    return x / y;

}

int main()

{

    int input = 0;

    int(*pf[5])(int,int) = {0,Add,Sub,Mul,Div};

    int x = 0;

    int y = 0;

    int ret = 0;



    do

    {

        menu();

        printf("qingxuanze\n");

        scanf("%d",&input);

        if(input >= 1 && input <= 4)

        {

            printf("qingshuruianggecaozuoshu\n");

            scanf("%d %d",&x,&y);

            ret = (*pf[input])(x,y);

            printf("%d\n",ret);

        }

        else if(input == 0)

        {

            printf("tuichuyouxi\n");

            break;

        }

        else

        {

            printf("xuanzecuowu,qingchongxinxuanze\n");

        }



    } while(input);





    return 0;

}

5.回调函数

#include <stdio.h>
int Add(int x, int y)
{
	return x + y;
}
int Sub(int x, int y)
{
	return x - y;
}
int Mul(int x, int y)
{
	return x * y;
}
int Div(int x, int y)
{
	return x / y;
}
void menu()
{
	printf("*******************************\n");
	printf("****** 1.Add****** 2.Sub*******\n");
	printf("****** 3.Mul****** 4.Div*******\n");
	printf("************* 5.exit***********\n");
	printf("*******************************\n");
	printf("*******************************\n");
}
void Calc(int (*pf)(int,int))
{
	int x = 0;
	int y = 0;
	printf("请输入两个操作数:>\n");
	scanf("%d %d", &x, &y);
	int ret = (*pf)(x, y);
	printf("%d\n", ret);
}
int main()
{

	int input = 0;

	do
	{
		menu();
		printf("请选择:>\n");
		scanf("%d", &input);


		switch (input)
		{
		case 1:
			Calc(Add);
			break;
		case 2:
			Calc(Sub);
			break;
		case 3:
			Calc(Mul);
			break;
		case 4:
			Calc(Div);
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
				break;

		}


	} while (input);





	return 0;
}

6.qsort库函数对数据进行排序

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int cam_p(const void *p1,const void *p2)
{
	if (*(int*)p1 > *(int*)p2)
	{
		return 1;
	}
	else if (*(int*)p1 < *(int*)p2)
	{
		return -1;
	}
	else
	{
		return 0;
	}
}
void prin_t(int *arr,int sz)
{
	for (int i = 0;i < sz;i++)
	{
		printf("%d", *(arr + i));
	}
}
void test()
{
	int arr[] = { 2,3,5,6,7,4,9,8,1,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr,sz,sizeof(arr[0]), cam_p);
	prin_t(arr,sz);
}
int main()
{
	test();

	return 0;
}

7.   strcmp比较的不是字符串的长度,而是对应字符的ASCLL码值

8. 结构体的创建与查找

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct stu
{
	char name[20];
	int age;
};
int main()
{
	struct stu s = { "zhangsan",20};
	printf("%s %d\n", s.name, s.age);

	struct stu* ps = &s;
	printf("%s %d\n", (*ps).name, (*ps).age);
	printf("%s %d\n", ps->name, ps->age);

	return 0;
}

9. qsort排序结构体(名字)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct stu
{
	char name[20];
	int age;
};
int pai_xu(const void *p1,const void *p2)
{
	return strcmp((*(struct stu*)p1).name ,(*(struct stu*)p2).name);
}
int main()
{
	struct stu arr[] = { {"zhangsan",20},{"niaoniao",15},{"xiaoxiao",23} };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), pai_xu);



	return 0;
}

 10. qsort排序结构体(年龄)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct stu
{
	char name[20];
	int age;
};
int pai_xu(const void *p1,const void *p2)
{
	return (*(struct stu*)p1).age - (*(struct stu*)p2).age;
}
int main()
{
	struct stu arr[] = { {"zhangsan",20},{"niaoniao",15},{"xiaoxiao",23} };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), pai_xu);

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值