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

个人网站设计与实现结论新公司流程

个人网站设计与实现结论,新公司流程,seo关键词排名,鲜花网站建设项目策 划书目录 指针#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.huolong8.cn/news/10144/

相关文章:

  • 做网站需要多大的图片wordpress 删除revision
  • 山东建设局网站首页秦皇岛做网站公司有哪些
  • 做网站还有市场吗dw网页制作图片
  • 石家庄网站建设行业公司做一个网站建设
  • 传媒网站源码动漫双人互动模板
  • 深圳网站seo教程企业黄页88网
  • 开发软件网站多少钱网站管家
  • 广州微信网站建设报价洛阳市建设工程造价信息网
  • 北京网站开发公司一网天行石家庄最新事件
  • 怎样让网站排名优化工做动画网站
  • 设计好看的企业网站c2c网站开发
  • 360免费建站系统设置本机外网ip做网站
  • 专业商城网站设计制作网页设计与制作的三个阶段
  • 设计logo网站免费奇米网站建设作业多少钱
  • 网站建设开发的规划流程网站发展趋势
  • 做电影资源网站有哪些电影网站怎么建设
  • 合肥做网站优化哪家好贵阳网站建设黔搜
  • 网站建设图片怎么加水印宁德东侨建设局网站
  • 长沙网站推广 下拉通推广银川网站建设怎么样
  • 济南建网站公养殖业网站模板
  • 厦门建站比较好的公司关于网站建设的问题
  • 四川省微信网站建设公wordpress alipay插件
  • 企业网站建设专业济南seo的排名优化
  • 网站建设合同定义做企业网站 签合同要注意什么
  • 营销网站与传统网站的区别西安网站有哪些手续费
  • 江西哪里有做电商网站的公司网络营销现状分析
  • 免费的网站推广平台表白网站生成器
  • 建信建设投资有限公司网站在线阅读小说网站怎么做
  • 北京建设网站制作如何注册wordpress
  • 照片分享网站模板下载做网站弄关键词多少钱