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

网站建设外包公司容易被客户投诉吗四川省的住房和城乡建设厅网站

网站建设外包公司容易被客户投诉吗,四川省的住房和城乡建设厅网站,德州有名的网站建设公司,电商平台推广费用大概要多少目录 前言 1. 字符指针 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 数组名VS数组名 3.3 数组指针的使用 4. 数组参数、指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5. 函数指针 前言 指针在C语言中可谓是有着举足轻重的…目录 前言 1. 字符指针 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 数组名VS数组名 3.3 数组指针的使用 4. 数组参数、指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5. 函数指针 前言 指针在C语言中可谓是有着举足轻重的存在初学C语言的我们在《指针》章节已经接触过了一些指针的知识知道了指针的概念 指针就是个变量用来存放地址地址唯一标识一块内存空间。指针的大小是固定的4/8个字节32位平台/64位平台。指针是有类型指针的类型决定了指针的-整数的步长指针解引用操作的时候的权限。指针的运算。 指针的基础知识已经了解完毕那么在这一篇博客里我们将深入探讨指针的一些高级使用。 1. 字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char*  一般使用 int main() {char ch w;char* pc ch;return 0; } 还有一种使用方式 int main() {const char* pstr abcdef;printf(%s\n, pstr);return 0; } 上面这种用法很多人会有一个误区以为是把字符串 abcdef 放到字符指针 pstr 里了但是本质是把字符串 abcdef 中的首字符的地址放到了pstr中。 下面可以试着证明一下 字符串abcdef的地址就是a所在地址那么abcdef[3]相当于 ““a地址[3]”” 侧面印证了确实是把首字符地址存入了指针pstr中。数组名就是首元素地址既然说字符指针存放的是首字符的地址那么试着用数组下标的方式访问字符指针指向的内容结果发现一样可以打印出来。因此完全可以把常量字符串想象成一个数组然后用字符指针接收操作起来与数组一致。 注意最好使用 const 修饰存放字符串的字符指针因为字符串是常量不允许被修改如果修改了程序会崩溃。 一道经典【面试题】出自《剑指offer》 以下的最终输出是什么呢  #include stdio.h int main() {char str1[] nash.;char str2[] nash.;const char* str3 nash.;const char* str4 nash.;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; } 【答案】 str1 and str2 are not same str3 and str4 are same 【解释】 str1 和 str2 用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块str1和str2其实是各自创建了一个空间存放nash.因此它们的地址是不一致的。str3 和 str4 当用指针指向字符串时因为nash是常量字符串是不会被修改的那么既然不能被修改编译器就没必要保存多份只需要一份然后让指针都指向同一块内存即可因此地址值是一致的。 【扩展】 int main() {char str1[] hello bit.;char str2[] hello bit.;const char* str3 hello bit.;const char* str4 hello bit.;if (str3 str4)printf(Yes);elseprintf(No);return 0; 【答案】 结果为No因为str3和str4本身的地址值是不一样的只是str3和str4指向的内容是一样的。 2. 指针数组 这里我们复习一下下面指针数组是什么意思 int* arr1[10]; //整形指针的数组 char *arr2[4]; //一级字符指针的数组 char **arr3[5];//二级字符指针的数组 类比一下 字符数组 —— 存放字符的数组 整型数组 —— 存放整形的数组 那么 指针数组 —— 存放指针的数组即存放在数组中的元素都是指针类型。 那么很多人有个疑问指针数组到底有什么用呢 很多人直观的感受就是定义abcd然后将它们的地址都存入整型指针数组中。如下 错误的使用方式【没有意义】 int main() {int a 0;int b 1;int c 2;int* arr[3] { a,b,c };return 0; } 但是很少有人会这样使用的没有这种使用场景也没有人会这样使用这样写的没有任何意义。 正确的使用场景之一 【可以使用指针数组模拟一个二维数组】 int main() {int arr1[] { 1,2,3,4,5 };int arr2[] { 2,3,4,5,6 };int arr3[] { 3,4,5,6,7 };int* arr[3] { arr1,arr2,arr3 };//遍历三个数组int i 0;for ( i 0; i 3; i){int j 0;for ( j 0; j 5; j){printf(%d , arr[i][j]);}printf(\n);}return 0; } 使用指针数组维护多个数组模拟出一个二维数组因此操作也与而二维数组类似。  还有使用指针数组维护多个字符串 当然还有很多其他的应用场景但是由于篇幅有限这里就不再一一列举。 3. 数组指针 3.1 数组指针的定义 数组指针是指针还是数组 类比一下 整型指针 —— 指向整形的指针 字符指针 —— 指向字符的指针 那么 数组指针 —— 指向数组的指针 下面代码哪个是数组指针 int *p1[10]; int (*p2)[10]; //p1, p2分别是什么 【解释】 p2是数组指针。 p2先和*结合说明p2是一个指针变量然后指着指向的是一个大小为10个整型的数组。所以p是一个指针指向一个数组叫数组指针。 这里要注意[ ]的优先级要高于*号的所以必须加上来保证p2先和*结合。 3.2 数组名VS数组名 在往期博客链接点击前往中有提到过 数组名就是地址通常来说数组名是数组首元素的地址。 但是存在两种特殊情况 1、sizeof(数组名)这里的数组名表示整个数组计算的是整个数组的大小单位是字节。 2、数组名这里的数组名表示整个数组取出的是整个数组的地址。 除此之外所有遇到的数组名都是数组首元素的地址。 ​ 由上图可以证明第一组和第二组1时都只是跳过四个字节即arr表示的是首元素地址。 而第三组可以发现arr和arr1之间跳过了40个字节即一整个数组的大小因此证明arr表示整个数组。 指针类型决定了指针1到底几个字节。 那么我们大胆猜测一下arr的类型是int*arr[0]的类型也是int* 那么arr的类型就是int (*)[10],即数组指针存放数组。 既然看完了什么是数组指针那么做一道题来检测一下自己是否理解明白。 【练习】 下面代码中pc的类型是什么 int main() {char* arr[5];pc arr; //给pc定义类型return 0; } 【答案】 char* (*pc)[5] arr;  【解释】 首先pc得是个指针即(*pc) 指向一个元素为5的数组即(*pc)[5] 数组每个元素的类型是char*即char* (*pc)[5] 那么数组指针有哪些使用场景呢 3.3 数组指针的使用 错误使用场景 这种场景一点也不方便在使用数组时反而更麻烦了有一种 “脱裤子放屁” 的感觉。这种使用方式基本上不会出现。 如果非要用指针接收数组也应该使用指针接收首元素地址而不是接收整个数组的地址。这才是正确的访问姿势。 其实在一维数组传参过程中形参既可以写成数组的形式又可以写成指针的形式因为本质上这两种方式都是传递的是数组首元素地址是互等的。 既然本质上都是地址那么为什么还要写成数组形式呢 那是因为能够写成数组形式完全是为了照顾初学者因为实参是一个数组形参也定义一个数组来接收这个数组这种方式更能够让初学者理解。因此即使这么写本质也还是指针。 同理二维数组传参也有两种方式 形参也是使用二维数组的形式。形参使用数组指针的形式。 学了指针数组和数组指针我们来一起回顾并看看下面代码的意思 int arr[5]; int *parr1[10]; int (*parr2)[10]; int (*parr3[10])[5]; 【答案】 arr 是一个能够存放5个整型数据的数组。parr1 是一个数组能够存放整型指针的数组数组大小为10。parr2 是一个指针指向元素为10的数组每个元素的类型是int*parr3 是一个数组数组有10个元素指向一个指针指针指向的内容是元素为5的数组每个元素的类型是int即是一个存放数组指针的数组。 当然parr3看不懂也不要着急这种形式是很少用到的只是作为拓展知识点了解即可。 4. 数组参数、指针参数 4.1 一维数组传参 4.2 二维数组传参 二维数组传参函数形参的设计只能省略第一个[]的数字。因为对一个二维数组可以不知道有多少行但是必须知道一行多少元素。这样才方便运算。 4.3 一级指针传参 一级指针传参形参就写成一级指针就行。 #include stdio.h void print(int* p, int sz) {int i 0;for (i 0; i sz; i){printf(%d\n, *(p i));} } int main() {int arr[10] { 1,2,3,4,5,6,7,8,9 };int* p arr;int sz sizeof(arr) / sizeof(arr[0]);//一级指针p传给函数print(p, sz);return 0; } 【思考】 当一个函数的参数部分为一级指针的时候函数能接收什么参数 【答案】 4.4 二级指针传参 #include stdio.h void test(int** ptr) {printf(num %d\n, **ptr); } int main() {int n 10;int* p n;int** pp p;test(pp);test(p);return 0; } 【思考】 当函数的参数为二级指针的时候可以接收什么参数 【答案】 5. 函数指针 函数指针 —— 指向函数的指针 —— 存放的是函数的地址 Add和Add完全等价下面的例子可以证明。 可以定义 int (*pf2)(int,int) Add; 将Add赋值给pf2 pf2便是函数指针。 Add引用函数返回ret1此时对pf2解引用在调用函数返回ret2对pf2直接调用函数返回ret3在pf2前面加很多解引用返回ret4 最后打印结果居然发现四个结果都是一样的。 所以得出结论函数指针在调用所指向函数时可以不写*直接和函数名一样调用函数而*号在这里其实就只是一个摆设同样是为了照顾初学者的使用习惯所以才会导致当加了很多*号去解引用时得出来的结果依然是正确的结果。 下面来看两端有趣的代码 1、 (*(void (*)())0)(); void (*)()              ———— 函数指针类型( void (*)() )0         ———— 对0进行强制类型转换转换成函数指针。即将地址0当做存放函数指针的地址。(*( void (*)() )0 )()  ———— 通过函数指针调用函数函数的参数为空。 即上面的代码实在调用0地址处的函数这个函数没有参数返回值是void。 该代码出自《C陷阱和缺陷》 2、 void (*signal(int , void(*)(int)))(int); signal(int, void(*)(int))  ———— signal是一个函数它有两个参数整型int和函数指针类型void(*)(int)。void (*signal(int , void(*)(int)) )(int); ———— signal函数的返回类型也是函数指针类型void (*)(int) 但是这个代码看着太复杂了有没有办法简化呢 有没有办法将代码写成符合我们习惯的形式这样返回类型在前函数名在中间函数参数在后的void (*)(int) signal(int , void(*)(int))这样直接写是肯定不支持的但是可以通过typedef优化一下 typedef void(*pfun_t)(int); //对void(*)(int)重新起名为pfun_t pfun_t signal(int, pfun_t); 对void(*)(int)重新起名为pfun_t这样写出来的代码就清楚多了。 如果觉得作者写的不错求给作者一个大大的点赞支持一下你们的支持是我更新的最大动力
文章转载自:
http://www.morning.txjrc.cn.gov.cn.txjrc.cn
http://www.morning.dgsx.cn.gov.cn.dgsx.cn
http://www.morning.jftl.cn.gov.cn.jftl.cn
http://www.morning.nlffl.cn.gov.cn.nlffl.cn
http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn
http://www.morning.hlxpz.cn.gov.cn.hlxpz.cn
http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn
http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn
http://www.morning.tgwfn.cn.gov.cn.tgwfn.cn
http://www.morning.bmsqq.cn.gov.cn.bmsqq.cn
http://www.morning.lzbut.cn.gov.cn.lzbut.cn
http://www.morning.tqdqc.cn.gov.cn.tqdqc.cn
http://www.morning.mcjp.cn.gov.cn.mcjp.cn
http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn
http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn
http://www.morning.trrrm.cn.gov.cn.trrrm.cn
http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn
http://www.morning.rwjh.cn.gov.cn.rwjh.cn
http://www.morning.bpmdh.cn.gov.cn.bpmdh.cn
http://www.morning.nzhzt.cn.gov.cn.nzhzt.cn
http://www.morning.zlhbg.cn.gov.cn.zlhbg.cn
http://www.morning.qwmdx.cn.gov.cn.qwmdx.cn
http://www.morning.rxpp.cn.gov.cn.rxpp.cn
http://www.morning.wfjyn.cn.gov.cn.wfjyn.cn
http://www.morning.tpqrc.cn.gov.cn.tpqrc.cn
http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn
http://www.morning.kqpq.cn.gov.cn.kqpq.cn
http://www.morning.hjwzpt.com.gov.cn.hjwzpt.com
http://www.morning.srbl.cn.gov.cn.srbl.cn
http://www.morning.nj-ruike.cn.gov.cn.nj-ruike.cn
http://www.morning.xdlwm.cn.gov.cn.xdlwm.cn
http://www.morning.fdzzh.cn.gov.cn.fdzzh.cn
http://www.morning.sfwd.cn.gov.cn.sfwd.cn
http://www.morning.fqlxg.cn.gov.cn.fqlxg.cn
http://www.morning.kqzrt.cn.gov.cn.kqzrt.cn
http://www.morning.qqnp.cn.gov.cn.qqnp.cn
http://www.morning.iznek.com.gov.cn.iznek.com
http://www.morning.zfcfx.cn.gov.cn.zfcfx.cn
http://www.morning.wtyqs.cn.gov.cn.wtyqs.cn
http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn
http://www.morning.nbqwr.cn.gov.cn.nbqwr.cn
http://www.morning.jjpk.cn.gov.cn.jjpk.cn
http://www.morning.ktmbp.cn.gov.cn.ktmbp.cn
http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn
http://www.morning.abgy8.com.gov.cn.abgy8.com
http://www.morning.lizimc.com.gov.cn.lizimc.com
http://www.morning.bkppb.cn.gov.cn.bkppb.cn
http://www.morning.zlnyk.cn.gov.cn.zlnyk.cn
http://www.morning.nlrp.cn.gov.cn.nlrp.cn
http://www.morning.zjrnq.cn.gov.cn.zjrnq.cn
http://www.morning.hmhdn.cn.gov.cn.hmhdn.cn
http://www.morning.wkjzt.cn.gov.cn.wkjzt.cn
http://www.morning.lfttb.cn.gov.cn.lfttb.cn
http://www.morning.smwlr.cn.gov.cn.smwlr.cn
http://www.morning.xhftj.cn.gov.cn.xhftj.cn
http://www.morning.bnqcm.cn.gov.cn.bnqcm.cn
http://www.morning.tqpds.cn.gov.cn.tqpds.cn
http://www.morning.kgqww.cn.gov.cn.kgqww.cn
http://www.morning.wbllx.cn.gov.cn.wbllx.cn
http://www.morning.xsszn.cn.gov.cn.xsszn.cn
http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn
http://www.morning.lpnb.cn.gov.cn.lpnb.cn
http://www.morning.junmap.com.gov.cn.junmap.com
http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn
http://www.morning.yymlk.cn.gov.cn.yymlk.cn
http://www.morning.fmkbk.cn.gov.cn.fmkbk.cn
http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn
http://www.morning.bpyps.cn.gov.cn.bpyps.cn
http://www.morning.leboju.com.gov.cn.leboju.com
http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn
http://www.morning.mynbc.cn.gov.cn.mynbc.cn
http://www.morning.wjyyg.cn.gov.cn.wjyyg.cn
http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn
http://www.morning.brhxd.cn.gov.cn.brhxd.cn
http://www.morning.yjprj.cn.gov.cn.yjprj.cn
http://www.morning.cwyfs.cn.gov.cn.cwyfs.cn
http://www.morning.nnmnz.cn.gov.cn.nnmnz.cn
http://www.morning.tndhm.cn.gov.cn.tndhm.cn
http://www.morning.lqws.cn.gov.cn.lqws.cn
http://www.morning.rlbg.cn.gov.cn.rlbg.cn
http://www.tj-hxxt.cn/news/236407.html

相关文章:

  • 做网站的流量怎么算钱企业装修展厅公司
  • 网站建设及外包杭州富阳做网站
  • 景区网站建设方案 费用电商 wordpress主题
  • 网站证书怎么做网页版式设计分析
  • dede 两个网站图片路径模板公司
  • 如何提交网站给百度福州大型网站设计公司
  • 网站建设外包服务广告设计专业有哪些
  • 虚拟主机代理商的网站打不开了怎么办高端品牌网站建设电商网站设计
  • 阿里巴巴有几个网站是做外贸的旅行社网站怎么做
  • 网站建设如何更改背景图片四川旅游seo整站优化
  • 资阳网站设计做网站干什么
  • 网站后台数据采集澧县网页设计
  • 微信小程序跳转到网站网站首页怎么做全屏swf
  • 如何建设商城网站wordpress使用方法
  • 公司做网站计入什么科目自动做图在线网站
  • 推荐手机网站建设南阳专业网站建设
  • 广州做网站 timhi用阿里云和大淘客做网站
  • 北京网站建设熊掌号阿里巴巴网站威海哪里做
  • 番禺论坛网站建设珠海做网站费用
  • 佛山网站优化有移动分销系统代理
  • 制作公司的网站我的网站在百度搜不到了
  • 网站建站思路网站建设消费者群体分析
  • 美食网站建设页面要求淘宝网站代理怎么做
  • 网站建设的目的包含哪些方面微网站免费软件
  • 做优化很好的网站wordpress嵌入百度地图可以导航
  • 实名网站审核中心龙华建站公司
  • 河南省做网站的企业怎么线上卖东西
  • 郑州做网站的公司贵阳住房城乡建设部网站
  • 石河子网站设计网络营销这个专业怎么样
  • 怎么做刷会员的网站天津微外卖网站建设