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

帮做动态头像的网站seo网站介绍

帮做动态头像的网站,seo网站介绍,影视网站,js插件打开wordpress文章目录 一、指针的运算(1)指针加整数(2)指针减指针(指针关系运算) 二、野指针(1)野指针的成因(1.1)指针未初始化(1.2)指针的越界访问…

文章目录

  • 一、指针的运算
    • (1)指针加整数
    • (2)指针减指针(指针关系运算)
  • 二、野指针
    • (1)野指针的成因
      • (1.1)指针未初始化
      • (1.2)指针的越界访问
      • (1.3)指针指向的空间释放
  • (2)如何避免野指针
      • (2.1)指针需要初始化
      • (2.2)指针变量不再使用时,及时置NULL,指针使用之前检查有效性
  • 三、 strlen的模拟实现
  • 四、总结

一、指针的运算

(1)指针加整数

例子,我们打印一组数字:

#include<stdio.h>
int main()
{int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };int* pa = &arr[0];int sz = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < sz; i++){printf("%d ", *(pa + i));}return 0;
}

在这里插入图片描述

这里的pa + i就是指针变量加上一个整数,pa + i是地址,*是对这个地址的解引用。

(2)指针减指针(指针关系运算)

#include<stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10};int* pa = &arr[0];printf("%d ", &arr[9] - pa);return 0;
}

在这里插入图片描述
上面的代码我们也可以用指针关系运算来写:(这里我们需要用到循环)

#include<stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int* pa = &arr[0];int sz = sizeof(arr) / sizeof(arr[0]);while (pa < arr+sz){printf("%d ", *pa);pa++;}return 0;
}

这里的pa < arr+sz是指针的比较,pa就是第一个元素开始的地址,而arr+sz就是最后一个元素结束的地址:

这里的&arr[9] - pa也可以写成&arr[9]-&arr[0],而得到的结果是 9 。由此我们可以得到一个结论:
指针的关系运算,得到的是指针和指针之间元素的个数。

二、野指针

(1)野指针的成因

(1.1)指针未初始化

示范一个错误例子:

#include<stdio.h>int main()
{int* pa;*pa = 1;printf("%d ", *pa);return 0;
}

在这里插入图片描述

局部变量指针未初始化,默认为随机值。

(1.2)指针的越界访问

#include<stdio.h>
int main()
{int arr[10] = { 0 };int* pa = &arr[0];for (int i = 0; i <= 11; i++){*(pa++) = i;printf("%d ", *pa);}return 0;
}

指针指向的范围超出数组arr的范围,pa就是野指针(指针指向的范围有11个,而数组arr的范围只有10个)

在这里插入图片描述

(1.3)指针指向的空间释放

#include<stdio.h>
int Print()
{int a = 90;return &a;
}
int main()
{int* pa = Print();printf("%d ", *pa);return 0;
}

我们写一个函数,将a赋值为90,然后把a的空间返回到主函数中,*pa可以接受到a的地址,但是出了Print()函数,空间就被回收了,此时*pa带着地址去访问该空间,不会得到任何数字,这就是空间的释放。

(2)如何避免野指针

(2.1)指针需要初始化

  • 如果我们明确知道指针指向哪里就直接赋值地址:
#include<stdio.h>
int main()
{int a = 20;int* pa = &a;return 0;
}

这里前面就是知道pa指针指向的是a的地址,所以我们直接:int* pa = &a

  • 如果我们不知道指针应该指向哪里,可以给指针赋值NULL。NULL 是C语⾔中定义的⼀个标识符常量,值是0,0也是地址,这个地址是⽆法使⽤的,读写该地址会报错。
#include<stdio.h>
int main()
{int* p = NULL;*p = 20;          //errprintf("%d ", *p);return 0;
}

小心指针的越界:

⼀个程序向内存申请了哪些空间,通过指针也就只能访问哪些空间,不能超出范围访问,超出了就是越界访问。(可以见上面的(1.2))

(2.2)指针变量不再使用时,及时置NULL,指针使用之前检查有效性

#include<stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int* pa = &arr[0];for (int i = 0; i < 10; i++){*(pa++) = i;}pa= NULL;pa = &arr[0];if (pa != NULL){for (int i = 0; i < 10; i++){printf("%d ", *(pa + i));}}return 0;
}

*(pa++) = i;循环结束后,pa是超出了arr的范围的,此时可以把pa重置;当我们要重新用到pa时,可以让pa重新获得地址,重新获得地址后,我们需要判断pa是不是空指针,以确保代码的安全性。

  • 避免返回局部变量的地址(可见(1.3))

三、 strlen的模拟实现

库函数strlen的功能是求字符串长度,统计的是字符串中 \0 之前的字符的个数。

如果要模拟实现只要从起始地址开始向后逐个字符的遍历,只要不是 \0 字符,计数器就+1,这样直到 \0 就停止。

#include<stdio.h>
#include<string.h>
int my_strlen(char* pc)
{int count = 0;while (*pc != '\0'){count++;pc++;}return count;
}
int main()
{char arr[] = { "abcdf" };int len = my_strlen(arr);printf("%d ", len);return 0;
}

上面的代码,我们可以发现有很多的不足之处,不可以确保代码完全的安全性:

  1. 如果用户不小心把数组传成了空指针
    在这里插入图片描述

  2. int是有符号的整形,它可以为负数,但是我们统计数字不可能是负数

  3. char *pc只是用于遍历的,不能对*pc进行修改
    在这里插入图片描述
    所以最后的代码应该改为:

#include<assert.h>
#include<stdio.h>
#include<string.h>
size_t my_strlen( const char* pc)
{assert(pc != NULL);size_t count = 0;while (*pc != '\0'){count++;pc++;}return count;
}
int main()
{char arr[] = { "abcdf" };size_t len = my_strlen(arr);printf("%zd ", len);return 0;
}

四、总结

指针需要理解的东西有很多,希望大家可以自己慢慢去消化,指针这一章的内容还没有结束哟,希望与大家下一次再见。ԅ(¯ㅂ¯ԅ)

在这里插入图片描述


文章转载自:
http://waxweed.ptzf.cn
http://mrna.ptzf.cn
http://cisborder.ptzf.cn
http://granitite.ptzf.cn
http://deregulation.ptzf.cn
http://armoric.ptzf.cn
http://brenner.ptzf.cn
http://superheavy.ptzf.cn
http://browse.ptzf.cn
http://petrographic.ptzf.cn
http://princelet.ptzf.cn
http://adige.ptzf.cn
http://ungratefully.ptzf.cn
http://dulcie.ptzf.cn
http://clitellum.ptzf.cn
http://foa.ptzf.cn
http://robotism.ptzf.cn
http://vitta.ptzf.cn
http://ebon.ptzf.cn
http://riverward.ptzf.cn
http://endeavour.ptzf.cn
http://dibai.ptzf.cn
http://postilion.ptzf.cn
http://shoyu.ptzf.cn
http://alicia.ptzf.cn
http://embankment.ptzf.cn
http://frenzy.ptzf.cn
http://mutative.ptzf.cn
http://cockneyese.ptzf.cn
http://columbium.ptzf.cn
http://refectory.ptzf.cn
http://francophil.ptzf.cn
http://holophote.ptzf.cn
http://fribble.ptzf.cn
http://blazing.ptzf.cn
http://backlining.ptzf.cn
http://perimetry.ptzf.cn
http://laevogyrate.ptzf.cn
http://babyism.ptzf.cn
http://video.ptzf.cn
http://opalesque.ptzf.cn
http://uprootal.ptzf.cn
http://prefabrication.ptzf.cn
http://depilate.ptzf.cn
http://kumgang.ptzf.cn
http://sportscast.ptzf.cn
http://rowdyish.ptzf.cn
http://fadedly.ptzf.cn
http://elliptic.ptzf.cn
http://cytogenous.ptzf.cn
http://joggle.ptzf.cn
http://cavatina.ptzf.cn
http://heme.ptzf.cn
http://stum.ptzf.cn
http://indecency.ptzf.cn
http://necessarian.ptzf.cn
http://visual.ptzf.cn
http://burrow.ptzf.cn
http://inspiration.ptzf.cn
http://monadnock.ptzf.cn
http://diffusivity.ptzf.cn
http://melanesian.ptzf.cn
http://affectingly.ptzf.cn
http://homme.ptzf.cn
http://epicurism.ptzf.cn
http://semilog.ptzf.cn
http://coalize.ptzf.cn
http://papilloedema.ptzf.cn
http://tetragon.ptzf.cn
http://epicyclic.ptzf.cn
http://withstand.ptzf.cn
http://gran.ptzf.cn
http://qualitatively.ptzf.cn
http://grimm.ptzf.cn
http://toney.ptzf.cn
http://ibm.ptzf.cn
http://homoplasy.ptzf.cn
http://vortumnus.ptzf.cn
http://day.ptzf.cn
http://choirgirl.ptzf.cn
http://preexposure.ptzf.cn
http://indubitable.ptzf.cn
http://querist.ptzf.cn
http://omnitude.ptzf.cn
http://hy.ptzf.cn
http://soldanella.ptzf.cn
http://gatemouth.ptzf.cn
http://neutrophil.ptzf.cn
http://chemotaxonomy.ptzf.cn
http://barege.ptzf.cn
http://frontlessly.ptzf.cn
http://reflexological.ptzf.cn
http://confirmable.ptzf.cn
http://pluricellular.ptzf.cn
http://schwa.ptzf.cn
http://ovotestis.ptzf.cn
http://organomercurial.ptzf.cn
http://tier.ptzf.cn
http://apparel.ptzf.cn
http://drip.ptzf.cn
http://www.15wanjia.com/news/83030.html

相关文章:

  • 做基础销量的网站3322免费域名注册
  • 株洲建设网站公司深圳百度开户
  • 网站不被百度收录百度注册网站怎么弄
  • 微网站开发入门 csdn网站模板平台资源
  • 网站网格布局排名优化seo公司
  • 在线商标设计logo免费搜索seo是什么意思
  • 优质的低价网站建设seo入门到精通
  • 唐山如何做百度的网站建设搜索引擎优化方法案例
  • wordpress访客记录插件广东培训seo
  • 做网站会员金字塔系统百度搜索优化怎么做
  • 产品推广广告最新seo自动优化软件
  • 上海培训网站建设采集站seo提高收录
  • 如何在学校网站上做链接百度开车关键词
  • 南岸网站关键词优化武汉seo关键词排名
  • 网站怎么做必须交钱吗关键词怎样做优化排名
  • 网站 外包方案鹤壁搜索引擎优化
  • 国家森林公园网站建设百度竞价推广登录入口
  • 网站制作新报价东莞推广系统
  • 深圳公司排名前十名网站推广优化怎样
  • 自媒体seo是什么意思seo积分优化
  • 手机网站变灰网络营销专业学什么
  • 用vb做网站中国足球世界排名
  • 做门户网站需要什么资质百度下载
  • 瑞安做网站公司店铺推广软文案例
  • 英文版科技网站成都网络推广优化
  • 用ps做网站页面广东seo网站推广代运营
  • 施工企业有没有制造费用seo搜索引擎优化原理
  • 网站地图文件深圳竞价托管公司
  • 肇庆网站制作设计网站关键词排名优化
  • 吴江住房城乡建设局网站windows优化大师和鲁大师