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

飞飞影视做的网站常州百度青之峰

飞飞影视做的网站,常州百度青之峰,数据分析师课程,网站建设制作要学什么文章目录 1.字符指针变量2.数组指针变量3.函数指针变量4.函数指针数组5.二维数组传参本质6.拓展补充希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力#xff01; 本章节接着学习常见的指针变量类型 1.字符指针变量 字符指针变量#xff0c;顾名思义就是字… 文章目录 1.字符指针变量2.数组指针变量3.函数指针变量4.函数指针数组5.二维数组传参本质6.拓展补充希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力 本章节接着学习常见的指针变量类型 1.字符指针变量 字符指针变量顾名思义就是字符类型的指针即 char* 常见的输出格式是这样的 int main() {char ch w;char *pc ch;*pc w;return 0; }这是存放一个字符的情况如果存放字符串呢? int main() {const char* pstr hello bit.;printf(%s\n, pstr);return 0; }乍一看是存放字符串在指针变量中但我们要记住指针变量是用来存放地址的 所以这里本质是把字符串 hello bit. 首字符的地址放到了pstr中即字符 h 的地址 2.数组指针变量 上一篇 vlog 学到了指针数组就是存放指针的数组也可以理解为存放指针的集合(元素相同)那么数组指针就可以得出是存放数组地址的指针是一种指针变量指向数组 int *p1[10]; int (*p2)[10];那么以上哪种是数组指针 答案是下面那个 分析[ ] 的优先级大于 * 所以必须加上 [ ] 来保证 p 和 * 优先结合 p先和 * 结合说明p是一个指针变量然后指针指向的是一个大小为10个整型的数组 所以 p 是一个指针指向一个数组叫数组指针 int 表示 p指向的数组的元素类型 p 是数组指针变量名10是指向数组的元素个数 3.函数指针变量 根据前面学过的类比不难发现函数指针变量应该是用来存放函数地址的通过地址能够调用函数的 那么函数真的有地址吗 #include stdio.h void test() {printf(hehe\n); } int main() {printf(test: %p\n, test);printf(test: %p\n, test);return 0; }通过以上代码可以发现函数确实有地址用函数名就能代表其地址当然也可以通过 函数名 的方 式获得函数的地址为了方便一般就不写取地址符 其语法形式为 int(*pf3)(int, int) Add; int(*pf3)(int x, int y) Add;函数参数的变量名可写可不写取地址符也是 int 是指向函数的返回类型pf3 是函数指针变量名int xint y 是 pf3 指向函数的参数类型和个数 #include stdio.h int Add(int x, int y) {return xy; } int main() {int(*pf3)(int, int) Add;printf(%d\n, (*pf3)(2, 3));printf(%d\n, pf3(3, 5));return 0; }可以将通过函数指针调用指针指向的函数写一个我们之前写过的加法函数 这里通过解引用函数指针 pf3 的方式来调用它所指向的函数也就是 Add 函数传入参数 2 和 3然后将返回的结果使用 printf 函数输出。实际上在这种情况下解引用操作符 * 在这里是可选的因为在 C 语言中函数名本身在求值时就会转换为指向该函数的指针所以也可以直接写成 pf3(2, 3) 4.函数指针数组 在学习了指针数组的基础上我们引入函数指针放入数组 那么以下哪种为正确的形式 int (*parr1[3])(); int *parr2[3](); int (*)() parr3[3];答案是第一个 定义形式如下返回值类型 (*数组名[数组大小])(参数列表) parr1 先和 [ ] 结合说明 parr1是数组是 int (*)() 类型的函数指针 那么参数如何理解其实就是每个元素代表的函数 #include stdio.hint add(int a, int b) {return a b; }int subtract(int a, int b) {return a - b; }int main() {int (*func_array[2])(int, int) {add, subtract};return 0; }在上述代码中func_array 数组的两个元素分别被初始化为 add 函数和 subtract 函数的指针 5.二维数组传参本质 讲数组的时候说过二维数组其实可以看做是每个元素是一维数组的数组也就是二维数组的每个元素是一个一维数组那么二维数组的首元素就是第一行是个一维数组 第一行的一维数组的类型就是 int [5] 所以第一行的地址的类型就是数组指针类型 int(*)[5] 那就意味着二维数组传参本质上也是传递了地址传递的是第一行这个一维数组的地址那么形参也是可以写成指针形式的总的来说就是把二维数组当一维数组理解第一行看成一维数组的第一个元素首元素就是第一行一整行的地址 #include stdio.hvoid test(int (*p)[5], int r, int c){int i 0;int j 0;for(i0; ir; i){for(j0; jc; j){printf(%d , *(*(pi)j));}printf(\n);} } int main() {int arr[3][5] {{1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7}};test(arr, 3, 5);return 0; }普通的遍历数组传参也可以这样写 这里的 *(pi) 相当于获取二维数组的第 i 行的首地址因为 p 是指向包含 5 个整数的数组的指针pi 就指向了第 i 行然后 *(pi)j 就是指向第 i 行第 j 列元素的指针最后 ((pi)j) 就是获取该位置的元素值并输出 虽然解引用通常是获取元素本身但在指向二维数组行的指针这种特殊情况下由于指针所指向的对象本身就是一个数组解引用得到的就是这个数组的首地址这是由 C 语言的指针和数组特性共同决定的 二维数组传参形参的部分可以写成数组也可以写成指针形式 6.拓展补充 补充一个关键字 typedef 是用来类型重命名的可以将复杂的类型简单化 普通类型 typedef unsigned int uint; //将unsigned int 重命名为uint普通指针类型 typedef int* ptr;数组函数指针类型 typedef int(*parr)[5]; //新的类型名必须在*的右边 typedef void(*pfun)(int);//新的类型名必须在*的右边下一期 vlog 将对二分查找转移表冒泡排序等常见算法题目进行练习解析 建议对前面的知识都有系统性的理解后再来写题 主页传送门DARLING Zero two♡ 的 blog 希望读者们多多三连支持 小编会继续更新 你们的鼓励就是我前进的动力
http://www.w-s-a.com/news/171423/

相关文章:

  • 企业网站设计开发网站关键词优化seo
  • 郑州高档网站建设台州网站建设推广
  • 广东省建设信息港网站WordPress手机缩略图设置
  • 优秀网站主题平顶山专业做网站公司
  • wordpress返回顶部插件wordpress站群seo
  • 企业网站建设报价表百度竞价托管哪家好
  • 织梦网站首页打开慢淄博网站推广那家好
  • 苏州高端网站建设kgwl互动网站建设的主页
  • 宿州网站建设哪家公司好个人网站制作方法
  • 网站正能量晚上在线观看视频站长之家关键词挖掘工具
  • 建设网站怎么判断是电脑还是手机仿租号网站源码网站开发
  • seo百度网站排名软件重庆巫山网站设计公司
  • 搭建视频播放网站网站排名诊断
  • 网站域名注册网站centos做网站服务器
  • 网站服务器共享的 vpsh5页面制作软件电脑版
  • 免费手机网站申请上海网站建设设计公司哪家好
  • 站长工具大全企业网上书店网站建设设计
  • 做网站的专业公司公司网站是做的谷歌的
  • 做网站前期工作wordpress图片并排
  • 免费注册网站哪个好wordpress评论修改
  • 合肥模板网站建设软件赤峰公司网站建设
  • 毕业设计都是做网站吗深圳网站制作企业邮箱
  • 网站排名 优帮云小规模公司简介怎么写
  • 那个做头像的网站好选择手机网站建设
  • 设计一个网站花多少时间做视频网站适合用什么服务器
  • asp网站开发环境订单系统单页面网站怎么做
  • 山东网站建设都有那些企业推广策略
  • 网站开发文档是什么概念衣服销售网站建设规划书范文
  • 中国建筑装饰网官网企业网站设计优化公司
  • 南海建设工程交易中心网站c2c交易平台有哪些?