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

制作b2c网站优质的seo快速排名优化

制作b2c网站,优质的seo快速排名优化,安全的定制型网站建设,网站的内链怎么做【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.khdw.cn/news/16888.html

相关文章:

  • 长春网站建设加q479185700登录百度app
  • 烟台汽车网站建设网络热词
  • 东莞网站制作方案定制宁波seo深度优化平台有哪些
  • 河北建筑网站门户网站排行榜
  • 沈阳网站建设成创万网域名注册官网查询
  • 国外做直播网站网络舆情分析报告范文
  • 东莞网站建设东莞最新旅游热点
  • 网站跟系统的区别是灰色行业推广平台
  • 大淘客做网站怎么在百度上打广告
  • 博客用来做微网站代刷网站推广
  • wordpress聊天室最好用的手机优化软件
  • 承德网站建设上海搜索引擎优化公司排名
  • 公网ip做网站访问不网站免费网站免费优化优化
  • 苏州建网站的公司哪家公司好seo优化师
  • 网站显示内容不显示百度新闻搜索
  • 可以做日语翻译的兼职网站百度灰色词排名代发
  • 网站建设行业资讯作品推广
  • 天津做网站的公司有哪家电子商务网络营销
  • 域名 做网站和邮箱优化seo深圳
  • 招聘网站做精准 置顶seo网络推广优化
  • 《奖励自己的网站》小程序流量点击推广平台
  • 阆中网站网站建设广东最新新闻
  • 做的网站访问不了网络营销怎么做?
  • 企业网站开发知名品牌有哪些企业查询网
  • wordpress操作教程西安seo代理
  • 长沙房地产google seo是什么意思
  • 网站维护要什么秦皇岛seo排名
  • 网站制作钱小广告怎么能弄干净
  • 随州制作网站网页版登录入口
  • 我的世界的头怎么做视频网站免费个人网站建站