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

成都个人兼职做网站photoshop网站模板下载

成都个人兼职做网站,photoshop网站模板下载,wordpress放视频,苏州网站建设推荐q479185700霸屏文章目录 1.字符指针变量常见的字符指针初始化另一种字符指针初始化例#xff1a; 2.数组指针变量什么是数组指针变量数组指针变量创建数组指针变量初始化例#xff08;二维数组传参的本质#xff09; 3.函数指针变量什么是函数指针变量呢#xff1f;函数指针变量创建函数指… 文章目录 1.字符指针变量常见的字符指针初始化另一种字符指针初始化例 2.数组指针变量什么是数组指针变量数组指针变量创建数组指针变量初始化例二维数组传参的本质 3.函数指针变量什么是函数指针变量呢函数指针变量创建函数指针使用typedef关键字 4.函数指针数组概念创建通过函数指针数组实现计算器 1.字符指针变量 常见的字符指针初始化 字符指针 char * 常见的初始化 int main() {char a w;char* p a;return 0; }跟 int *类型的初始化一样下面介绍另一种字符指针的初始化 另一种字符指针初始化 这种是将一个字符串直接赋给字符指针变量 如 char* p abcdefg;那么它能不能像一般的字符数组那样直接打印出来呢我们通过代码看看 int main() {char a[] abcdefg;char* p abcdefg;printf(%s, a);//打印字符数组printf(%s, *p);//打印指针初始化出来的字符串return 0; }运行结果 由结果看出只有字符数组打印出来了而字符指针没打印出来这是为什么呢 其实是因为这样初始化只是把字符串的首个字符的地址传给字符指针变量 p 这样的话 *pa。 在这里%s是打印字符串的所以打印不了一个字符。 那我们用打印一个字符的 %c 试试 int main() {char a[] abcdefg;char* p abcdefg;printf(%s\n, a);printf(%c, *p);return 0; }运行结果 字符指针只打印一个首字符验证了首个字符的地址传给字符指针变量 p 那么我们可以用循环的方式将这个字符串打印出来 int main() {char* p abcdefg;int s strlen(p);//求字符长度 for(int i0;is;i)printf(%c, *(pi));//将字符一一打印出来return 0; }运行结果 例 这是《剑指offer》中⼀道和字符串相关的笔试题问最后输出的结果是什么 代码 #include stdio.h int main() {char str1[] hello bit.;char str2[] hello bit.;const char *str3 hello bit.;const char *str4 hello bit.;if(str1 str2)printf(str1 and str2 are same\n);elseprintf(str1 and str2 are not same\n);if(str3 str4)printf(str3 and str4 are same\n);elseprintf(str3 and str4 are not same\n);return 0;}答案 分析 1.这道题其实就是比较首地址 2这⾥str3和str4指向的是⼀个同⼀个常量字符串。C/C会把常量字符串存储到单独的⼀个内存区域当⼏个指针指向同⼀个字符串的时候他们实际会指向同⼀块内存。但是⽤相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同str3和str4相同。 2.数组指针变量 数组指针是指针不是数组 什么是数组指针变量 我们通过其他类型的指针进行类比一下 整形指针变量 int * pint; 存放的是整形变量的地址能够指向整形数据的指针。 浮点型指针变量 float * pf; 存放浮点型变量的地址能够指向浮点型数据的指针。 那么数组指针变量就是存放数组地址指向数组的指针变量吧 数组指针变量创建 创建int (*p)[10] 解释p先和*结合说明p是⼀个指针变量变量然后指着指向的是⼀个⼤⼩为10个整型的数组。所以p是⼀个指针指向⼀个数组叫数组指针。 注意[ ]的优先级要⾼于 * 号的所以必须加上来保证p先和 * 结合。 数组指针变量初始化 数组指针是用来存放数组的指针的那么我们将数组取地址在赋给数组指针变量即可 如 int arr[10] { 1,2,3,4,5,7,8,9,0.6 }; int(*p)[10] arr;解释 图解一维数组 例二维数组传参的本质 在数组里面的二维数组可以看成一个一维数组只不过是每个元素就是一个数组而已所以根据数组名是数组⾸元素的地址这个规则⼆维数组的数组名表⽰的就是第⼀⾏的地址是⼀维数组的地址。 1.通过二维数组接收参数 这是一般的方法 void qin(int arr[2][5] ){for (int i 0; i 2; i) {for (int j 0; j 5; j)printf(%d , arr[i][j]);}printf(\n); } int main() {int arr[2][5] { 1,2,3,4,5,6,7,8,9,0 };qin(arr);return 0; }2.通过数组指针来了解二维数组的本质 void qin(int(*p)[5]) {//*(p1)arr[0]jfor (int i 0; i 2; i) {for (int j 0; j 5; j)printf(%d , (*(p i))[j]);// //*p*pi,当i 加1时相当于跳过二维数组中的一个一维数组//当然跟据前面的知识也可以写成这样 *(*(pi)j) }printf(\n); } int main() {int arr[2][5] { 1,2,3,4,5,6,7,8,9,0 };qin(arr);//在前面指针内容里说过数组名就是首元素的地址//那么我们这里把二维数组当成一维数组那么首元素不就是一整个一维数组的地址吗return 0; }图解 总结⼆维数组传参形参的部分可以写成数组也可以写成指针形式。 3.函数指针变量 什么是函数指针变量呢 数组指针是用来存数组的地址的那么函数指针呢 其实函数指针也是用来存地址的存的是函数的地址这里就有很多人有疑问了函数有地址 那么我们来做个测试 int add(int x, int y) {return x y; } int main() {printf(%p, add);return 0; }运行结果 很明显函数是有地址的 这里还有一个注意的是函数名和函数名都是代表函数的地址如addadd 我们来测试一下吧 int add(int x, int y) {return x y; } int main() {printf(add%p\n, add);printf(add%p, add);return 0; }运行结果 耶是一样的 函数指针变量创建 创建int (*p) (int, int) 函数指针使用 我们用函数指针来实现一下加法 int add(int x, int y) {return x y; } int main() {int (*p)(int, int) add;int a 3, b 9;printf(%d\n, p(a, b));//这里不用 * 也可以因为函数调用的时候本身就是用地址去调用printf(%d\n, (*p)(a, b));return 0; }运行结果 typedef关键字 typedef 是⽤来类型重命名的可以将复杂的类型简单化。 如 typedef unsigned int uint; //将unsigned int 重命名为uint那么如何来重命名指针类型呢 typedef int(*)(int ,int) te //错误 typedef int(*te)(int, int) //正确命名将重命名放到原来放函数指针名称的位置 typedef (*te)[10]//数组指针重命名4.函数指针数组 概念 把函数的地址存到⼀个数组中那这个数组就叫函数指针数组就是将函数指针放到一个数字里 创建 int (*) (intint)//函数指针类型 int (*p[10])(int ,int)//函数指针数组--p先和[]结合形成数组再和函数指针类型结合形成函数指针数组通过函数指针数组实现计算器 我们这里要实现一个简单的计算器分别有加法、减法、乘法、除法那么我们就要实现四个函数来实现然后还要一个选择来选择实行什么计算最后还需要一个菜单就完成了 我们先用一般的方法来实现计算器: #include stdio.h int add(int a, int b)//加法 {return a b; } int sub(int a, int b)//减法 {return a - b; } int mul(int a, int b)//乘法 {return a * b; } int div(int a, int b)//除法 {return a / b; } int main() {int x, y;int input 1;int ret 0;do//菜单{printf(*************************\n);printf( 1:add 2:sub \n);printf( 3:mul 4:div \n);printf( 0:exit \n);printf(*************************\n);printf(请选择);scanf(%d, input);switch (input){case 1://选择printf(输⼊操作数);scanf(%d %d, x, y);ret add(x, y);printf(ret %d\n, ret);break;case 2:printf(输⼊操作数);scanf(%d %d, x, y);ret sub(x, y);printf(ret %d\n, ret);break;case 3:printf(输⼊操作数);scanf(%d %d, x, y);ret mul(x, y);printf(ret %d\n, ret);break;case 4:printf(输⼊操作数);scanf(%d %d, x, y);ret div(x, y);printf(ret %d\n, ret);break;case 0:printf(退出程序\n);break;default:printf(选择错误\n);break;}} while (input);return 0; }使⽤函数指针数组的实现 我们将这4个函数都放到一个函数指针数组里当我们需要实行什么计算就通过什么下标来访问这个函数 #include stdio.h int add(int a, int b) {return a b; } int sub(int a, int b) {return a - b; } int mul(int a, int b) {return a*b; } int div(int a, int b) {return a / b; } int main() {int x, y;int input 1;int ret 0;int(*p[5])(int x, int y) { 0, add, sub, mul, div }; //储存函数地址这里的0也算一个地址我们这样是方便选择do{printf(*************************\n);printf( 1:add 2:sub \n);printf( 3:mul 4:div \n);printf( 0:exit \n);printf(*************************\n);printf( 请选择 );scanf(%d, input);//输入下标if ((input 4 input 1)){printf( 输⼊操作数 );scanf( %d %d, x, y);ret (*p[input])(x, y);printf( ret %d\n, ret);}else if(input 0){printf(退出计算器\n);}else{printf( 输⼊有误\n ); }以上就是我的分享 谢谢大家的观看
http://www.hkea.cn/news/14279582/

相关文章:

  • 网站建设与管理常用如何在网站上做免费代理
  • 城乡住房和城乡建设厅网站成都锦江规划建设局网站
  • 渭南商铺网站建设wordpress恋月
  • 网站维护团队北京企业网站模板建站开发
  • 网站建设找天宇智能花艺企业网站建设项目规划
  • 站长之家官网手机之家官网首页
  • 个人网站空间网站建设的费用结构包括
  • 成都红酒网站建设seo关键词挖掘工具
  • 做电影网站怎么选服务器短网址生成器 网址: 生成短网址
  • 电子商城网站建设项目规划书wordpress 产品报价系统
  • 建立网站的流程法律咨询
  • 毕设 网站开发的必要性做动态图片的网站
  • 智能建站软件哪个好石狮seo
  • 网站搭建费用百度官方网页版
  • 南京网站销售网站seo整站优化
  • oracle数据库网站开发陕西 建设工程有限公司网站
  • 做电商网站的框架结构图平面设计手机作图软件
  • 如何建立一个外贸网站宠物网站制作费用明细
  • 厦门网站seo建设wordpress 高可用
  • 苏州市建设安全监督局网站导入到wordpress
  • 网站备案几年备案一次安阳做推广网站
  • 360度全景网站的公司网站被入侵
  • 高端的扬中网站建设建筑设计网站排行榜
  • 企业网站 响应式 案例wordpress顺序设置别名
  • 电子商务网站建设与管理实验总结数据网站建设
  • 2017网站开发工资WordPress发表评论自定义
  • 建网站的系统网站上的支付接口怎么做
  • 做网站使用明星照片可以吗网站建设第三方平台
  • 星座 网站 建设一千块钱能注册公司吗
  • wordpress信息发布系统沧州seo公司