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

设计师线上接单平台南宁白帽seo技术

设计师线上接单平台,南宁白帽seo技术,dw做网站首页代码,郑州外贸网站建设公司【C编程问题集中营】使用数组指针时容易踩得坑 文章目录 【C编程问题集中营】使用数组指针时容易踩得坑一、获取数组首地址二、应用场景举例2.1 正常场景2.2 异常场景 三、总结 一、获取数组首地址 一维数组的首地址即数组第一个元素的指针,常用的获取一维数组首地…

在这里插入图片描述

【C编程问题集中营】使用数组指针时容易踩得坑

文章目录

  • 【C编程问题集中营】使用数组指针时容易踩得坑
    • 一、获取数组首地址
    • 二、应用场景举例
      • 2.1 正常场景
      • 2.2 异常场景
    • 三、总结

一、获取数组首地址

一维数组的首地址即数组第一个元素的指针,常用的获取一维数组首地址的方式有如下几种,以unsigned char类型的TestArray[4]数组举例:

  • TestArray
  • &TestArray[0];
  • &TestArray;

代码中通过以上三种方式中的任意一种方式均可获取到TestArray[4]数组的首地址,通过第三种方式获取数组首地址时,与其他两种在对首地址使用时表现有可能是不一样的,需要特别注意下,下面会对其应用场景进行举例;

二、应用场景举例

2.1 正常场景

正常场景的代码实现举例如下所示:

#include "stdio.h"unsigned char TestArray[4]   = {11u, 22u, 44u, 55u};
unsigned char TestArray_1[4] = {66u, 77u, 88u, 99u};void TestArrayDataFun(unsigned char *Data)
{if (Data != NULL){printf("TestArrayDataFun: %d %d\r\n", *Data, *(Data + 1));}
}int main(void)
{TestArrayDataFun(TestArray);TestArrayDataFun(&TestArray[0]);TestArrayDataFun(&TestArray);return 0;
}

从功能上来看,TestArrayDataFun函数会输出打印传入指针的第一个和第二个数组元素,对应的就是想输出TestArray数组的第一个和第二个元素,代码输出结果如下所示:

TestArrayDataFun: 11 22
TestArrayDataFun: 11 22
TestArrayDataFun: 11 22

从输出结果来看,三种获取数组首地址的方式是一样的。

2.2 异常场景

异常场景的代码实现举例如下所示:

#include "stdio.h"unsigned char TestArray[4]   = {11u, 22u, 44u, 55u};
unsigned char TestArray_1[4] = {66u, 77u, 88u, 99u};void TestArrayDataFun(unsigned char *Data)
{if (Data != NULL){printf("TestArrayDataFun: %d %d\r\n", *Data, *(Data + 1));}
}int main(void)
{TestArrayDataFun(TestArray);TestArrayDataFun(&TestArray[0]);TestArrayDataFun(&TestArray);TestArrayDataFun(TestArray + 1);TestArrayDataFun(&TestArray[0] + 1);TestArrayDataFun(&TestArray + 1);return 0;
}

从上述代码的逻辑来看,想要实现的功能是分别采用三种获取数组首地址的方式来打印出数组的第一个和第二个元素以及数组的第二个和第三个元素,最终代码执行后的结果如下所示:

TestArrayDataFun: 11 22
TestArrayDataFun: 11 22
TestArrayDataFun: 11 22
TestArrayDataFun: 22 44
TestArrayDataFun: 22 44
TestArrayDataFun: 66 77

前5个输出的结果与我们预期的一致,但是最后一个输出的结果与我们预期的不一致,大家可以仔细看下代码逻辑,输出的66和77是TestArray_1数组的第一个和第二个元素,并非TestArray数组的第二个和第三个元素,这是因为什么呢?

三、总结

直接说结论,以&TestArray方式获取数组首地址指针,其指针类型为整个数组大小对应的指针类型,在对其指针进行+1操作时,其指针偏移直接偏移了整个数组的大小,即偏移到了TestArray_1数组的首地址位置,所以再去提取数据时就取到了TestArray_1数组的第一个和第二个元素。

而为什么调用 TestArrayDataFun(&TestArray);函数,在函数内部进行+1操作就没有问题呢,是因为传参时相当于进行的强制类型转换,将其指针类型强转为unsigned char *,因此后续对其进行+1操作时只偏移了一个字节的地址;

http://www.hkea.cn/news/878739/

相关文章:

  • 陕西营销型网站建设推广普通话的内容简短
  • 做配电箱的专门网站百度指数属于行业趋势及人群
  • 学做网站的网站重庆seo整站优化报价
  • 保定网站设计概述seo推广软件排名
  • 查pv uv的网站网络营销推广服务
  • 怎样让客户做网站优化 保证排名
  • 企业营销型网站做的好网络营销的有哪些特点
  • 网站开发 合同兰州快速seo整站优化招商
  • 网站开发技术现状深圳网络营销推广培训
  • 知名网络公司有哪些河北网站seo
  • 学做网站多少钱关键词难易度分析
  • 传奇如何做网站网站建设策划书案例
  • 龙岗 网站建设深圳信科最好用的搜索神器
  • 动态网站开发日志重庆seo整站优化报价
  • 魔站网站建设微信公众号运营推广方案
  • 好的网站建设公司营销推广外包公司
  • 教育机构做网站素材长尾关键词爱站
  • 做网站选什么系统企业网站seo推广
  • 山东省南水北调建设管理局网站腾讯网qq网站
  • 菏泽做网站公司sem网络营销
  • 专业建站外包兰州网络优化seo
  • 企业邮箱腾讯杭州seo按天计费
  • 政府网站建设先进个人事迹互动营销
  • 网站建设之织梦模板做国外网站
  • 小程序电商模板seo关键词排名优化品牌
  • 泉州网站优化排名百度关键字优化价格
  • 上海网站建设好处win优化大师官网
  • 适合毕设做的简单网站初学seo网站推广需要怎么做
  • 想把书放到二手网站如何做深圳seo关键词优化
  • 合肥网站优化排名推广合理使用说明