当前位置: 首页 > news >正文

帮企业做网站的公司厦门小程序开发的公司

帮企业做网站的公司,厦门小程序开发的公司,建网站什么框架,最新未来三天全国天气预报目录 指针#xff1a; 学习目标#xff1a; 指针可以理解为#xff1a; 字符指针#xff1a; 定义#xff1a;字符指针 char*。 字符指针的使用#xff1a; 练习#xff1a; 指针数组#xff1a; 概念#xff1a;指针数组是一个存放指针的数组。 实现模拟二维… 目录 指针 学习目标 指针可以理解为 字符指针 定义字符指针 char*。 字符指针的使用 练习 指针数组 概念指针数组是一个存放指针的数组。 实现模拟二维数组 数组指针 概念能够指向数组的指针。(可以理解为先与指针结合再与数组结合) 值得注意的是 数组指针一般用于二维数组数组的传参  一维数组传参 二维数组的传参  总结:二维数组传参函数形参的设计只能省略第一个[ ]的数字因为对一个二维数组可以不知道有多少行但是必须知道一行多少元素这样才方便运算。 指针的传参 一级指针传参 二级指针的传参 函数指针 概念指向函数的指针。 阅读两段有趣的代码 类型重定义typedef  函数指针数组 定义int (*parr1[10])();  每个元素都是函数指针类型。 用途转移表。 函数指针数组的使用 指向函数指针数组的指针 定义 指向函数指针数组的指针是一个 指针 指针指向一个 数组 数组的元素都是 函数指针 ; 一般不直接写通过函数指针一步一步变化得到可以减少失误操作 回调函数 概念 使用回调函数模拟实现qsort()函数 qsort()运用 排序int类型 排序结构体类型 学习目标 1. 字符指针 2. 指针数组 3. 数组指针 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 指针 指针可以理解为 字符指针 定义字符指针 char*。 字符指针的使用 //使用1 int main () { char ch w ; char * pc ch ; * pc w ; return 0 ; } //使用2 int main () { const char* pstr hello bit. ;//把一个常量字符串的 首字符 h 的地址 存放到指针变量 pstr 中 printf ( %s\n , pstr ); return 0 ; } 练习 指针数组 概念指针数组是一个存放指针的数组。 int* arr1 [ 10 ];    // 整形指针的数组 char * arr2 [ 4 ];   // 一级字符指针的数组 char ** arr3 [ 5 ]; // 二级字符指针的数组 实现模拟二维数组 数组指针 概念能够指向数组的指针。(可以理解为先与指针结合再与数组结合) int (*p)[10]; // 解释 p先和*结合说明p是一个指针变量 然后指着指向的是一个大小为 10 个整型的数组。所以 p 是一个指针指 向一个数组叫数组指针。 // 这里要注意 [ ] 的优先级要高于 * 号的所以必须加上来保证 p 先和 * 结合。 值得注意的是 数组名的理解:数组名是数组首元素的地址 有2个例外 1. sizeof(数组名)这里的数组名不是数组首元素的地址数组名表示整个数组sizeof(数组名)计算的是整个数组的大小单位是字节 2. 数组名这里的数组名表示整个数组 数组名取出的是整个数组的地址  除此之外所有的地方的数组名都是数组首元素的地址 数组指针一般用于二维数组 数组的传参  二维数组的每一行可以理解为二维数组的一个元素每一行又是一个一维数组所以二维数组其实是一维数组的数组。         二维数组的数组名也是数组名数组名就是数组首元素的地址。 arr----首元素的地址 arr----第一行的地址 arr----一维数组的地址即数组的地址。 一维数组传参 二维数组的传参  总结:二维数组传参函数形参的设计只能省略第一个[ ]的数字因为对一个二维数组可以不知道有多少行但是必须知道一行多少元素这样才方便运算。 指针的传参 一级指针传参 二级指针的传参 函数指针 概念指向函数的指针。 int (*pf)(int, int) Add;     //pf是函数指针变量     //int (*)(int, int) 是函数指针类型 void test(char* pc, int arr[10]) {} int main() {void (*pf)(char *, int [10]) test;return 0; } 由上图可知           函数名是函数的地址         函数名也是函数的地址。 阅读两段有趣的代码 //代码1 ( * ( void ( * )()) 0 )(); 解析调用0地址处的函数             1. 将0强制类型转换为void (*)()  类型的函数指针             2. 调用0地址处的这个函数 //代码2 void ( * signal ( int , void ( * )( int )))( int ); 解析     1.signal 是一个函数声明     2.signal 函数有2个参数第一个参数的类型是int第二个参数的类型是 void(*)(int) 函数指针类型     3.该函数指针指向的函数有一个int类型的参数返回类型是void     4.signal 函数的返回类型也是void(*)(int) 函数指针类型,该函数指针指向的函数有一个int类型的参数返回类型是void 类型重定义typedef  //类型重定义1 typedef unsigned int uint; typedef int* ptr_t;int main() {uint u1;ptr_t p1;int* p2;return 0; }//类型重定义2 typedef int(*parr_t)[10]; typedef int (*pf_t)(int, int) ;int main() {typedef void(*pf_t)(int);pf_t signal(int, pf_t);//上方两句将下方的语句简化效果相同void (* signal(int, void(*)(int) ) )(int);return 0; }函数指针数组 定义int (*parr1[10])();  每个元素都是函数指针类型。 用途转移表。 函数指针数组的使用 #include stdio.h #include string.hint 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(***** 0.exit ******\n);printf(***************************\n); } //实现int类型的加减乘除 int main() {int input 0;int x 0;int y 0;int ret 0;//函数指针数组的使用 - 转移表int (* pfArr[5])(int, int) {NULL, Add, Sub, Mul, Div};0 1 2 3 4do{menu();printf(请选择:);scanf(%d, input);if (input 1 input 4){printf(请输入两个操作数:);scanf(%d %d, x, y);ret pfArr[input](x, y);printf(ret %d\n, ret);}else if(input 0){printf(退出计算器\n);}else{printf(选择错误重新选择\n);}} while (input);return 0; } 指向函数指针数组的指针 定义 指向函数指针数组的指针是一个 指针 指针指向一个 数组 数组的元素都是 函数指针 ; 一般不直接写通过函数指针一步一步变化得到可以减少失误操作 void (*pf)(const char*) test;   //pf是函数指针变量 void (*pfArr[10])(const char*);  //pfArr是存放函数指针的数组void (* (*p) [10])(const char*) pfArr;//p指向函数指针数组的指针 回调函数 概念 回调函数就是一个通过函数指针调用的函数。如果你把 函数的指针地址作为参数传递给另一个函数当这个指针被用来调用其所指向的函数 时我们就说这是回调函数。回调函数不是由该函数的实现方直接调用而是在特定的事件或条件发生时由另外的一方调用的用于对该事件或条件进行响应。 //回调函数的使用 void Calc(int (*pf)(int, int)) {     int x 0;     int y 0;     int ret 0;     printf(请输入两个操作数:);     scanf(%d %d, x, y);     ret pf(x, y);     printf(ret %d\n, ret); } 使用回调函数模拟实现qsort()函数 base:指向要排序的数组的第一个对象的指针转换为 .void*。 num:数组中由指向的元素个数。是无符号整型。 size:数组中每个元素的大小以字节为单位是无符号整型。 compar:指向比较两个元素的函数的指针重复调用此函数以比较两个元素。 qsort()运用 #include stdio.h //qosrt函数的使用者得实现一个比较函数 int int_cmp(const void * p1, const void * p2) {return (*( int *)p1 - *(int *) p2); } int main() {int arr[] { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };int i 0;qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof (int), int_cmp);for (i 0; i sizeof(arr) / sizeof(arr[0]); i){printf( %d , arr[i]);}printf(\n);return 0; } 排序int类型 #include stdio.h//比较int类型的比较函数 int my_compare(const void* q1, const void* q2) {return (*(int*)q1 - *(int*)q2); } //交换每一个字节的元素 void Swap(char* b1, char* b2, int size) {int i 0;for (i 0; i size; i){char tmp *b1;*b1 *b2;*b2 tmp;b1;b2;} } //模拟实现自己的qsort()函数 void my_qsort(void* base, int num, int size, int (*my_compare)(const void* q1, const void* q2)) {int i 0;int j 0;for (i 0; i num - 1; i){for (j 0; j num - 1 - i; j){//从小到大排序if (my_compare((char*)basej*size,(char*)base(j1)*size) 0){Swap((char*)base j*size, (char*)base (j 1)*size, size);}}} }int main() {int arr[10] { 2,4,6,7,8,3,1,0,9,5 };int sz sizeof(arr) / sizeof(arr[0]);my_qsort(arr, sz, sizeof(arr[0]), my_compare);return 0; } 排序结构体类型 #include string.h //创建学生结构体 struct Stu {char name[20];int age; }; //比较int类型的比较函数 int my_compare_age(const void* q1, const void* q2) {return ((struct Stu*)q1)-age - ((struct Stu*)q2)-age; } //比较int类型的比较函数 int my_compare_name(const void* q1, const void* q2) {return strcmp( ( (struct Stu*)q1 )-name ,( (struct Stu*)q2 )-name); } //交换每一个字节的元素 void Swap(char* b1, char* b2, int size) {int i 0;for (i 0; i size; i){char tmp *b1;*b1 *b2;*b2 tmp;b1;b2;} } //模拟实现自己的qsort()函数 void my_qsort(void* base, int num, int size, int (*my_compare)(const void* q1, const void* q2)) {int i 0;int j 0;//趟数for (i 0; i num - 1; i){//一趟内部比较的对数for (j 0; j num - 1 - i; j){//从小到大排序if (my_compare((char*)base j * size, (char*)base (j 1) * size) 0){//交换Swap((char*)base j * size, (char*)base (j 1) * size, size);}}} }int main() {struct Stu arr[] { {zhangsan,34},{lisi,27},{wanwu,20} };int sz sizeof(arr) / sizeof(arr[0]);my_qsort(arr, sz, sizeof(arr[0]), my_compare_age);my_qsort(arr, sz, sizeof(arr[0]), my_compare_name);return 0; } 以上就是个人学习指针的个人见解和学习的解析欢迎各位大佬在评论区探讨 感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连
http://www.hkea.cn/news/14268062/

相关文章:

  • 北京企业网站建设飞沐网站开发公司照片
  • 外贸公司用什么建网站公司网站开发项目管理制度
  • 个人网站建设方法和过程wordpress多站模式
  • 上海网站建设网页苏州市吴江建设局网站
  • 室内设计师之路网站百度做广告多少钱
  • 网站硬件建设公司怎样建设阿里巴巴网站
  • 做网站被骗培训网页
  • 山东建设兵团网站wordpress api 跨域
  • icp备案网站信息查询做论坛网站的元素
  • 搭建一个网站要多少怎么创业做电商
  • 不花钱的网站建设沧州做家装的公司网站
  • 门户网站开发 报价网站支付怎么做的
  • 营销型集团网站班级网站成品
  • 可免费商用的cms建站系统学生个人网页制作素材
  • 美化网站公司英文网站营销
  • 厦门旅游网站建设目的gvm网站是什么类的网站
  • 自己怎么做农好产品网站纪念平台网站建设
  • 广西网站建设seo优化给 小企业 建设网站
  • 怎样创建微网站网站被采集了 一个栏目不收录
  • ps制作网站模板台州seo网站推广
  • 南京移动网站建设报价北京公司摇号需要哪些资格条件
  • 推广网站加盟企业营销型网站建设的可行性分析
  • 网站商城建设合同免费下载企业网站设计素材
  • 网站制作与建设与网页制作wordpress的seo如何写关键词
  • 广州网站制作建设网站seo属于什么专业
  • 做网站的资金来源修改wordpress登录界面
  • 做公益的网站大兴手机网站建设
  • 大连建站费用免费开发平台网站
  • wordpress建站教程无极app定制开发公司网站模板
  • 网站推广做多大尺寸wordpress搭二级菜单404