您的位置 首页 传感器

指针,其实很风险

我们知道,指针是指向一个地址的。而指针的类型则表明了指针指向内容的大小,即包含字节数,这在对于指针的自增和自减中体现的很明确。比如…

咱们知道,指针是指向一个地址的。而指针的类型则表明晰指针指向内容的巨细,即包括字节数,这在关于指针的自增和自减中表现的很清晰。

比方下面一段代码,咱们别离界说了3个不同类型的指针,指向相同的地址,然后赋予不同的值。这样一下咱们就明晰了。

  1. //解说代码
  2. char*p_char;
  3. short*p_short;
  4. long*p_long;
  5. p_char=(char*)0x1000;
  6. p_short=(short*)0x1000;
  7. p_long=(long*)0x1000;
  8. *p_char=0x12;
  9. *p_short=0x1234;
  10. *p_long=0x12345678;

从以上的代码咱们即可看出,不同类型的指针,所能表明的数据巨细不同。并且需求留意的是,对指针的赋值操作。C言语运用指针的约束是,一切关于指针的操作有必要是同类型的指针才干够进行。像0x1000这样仅仅一个数字罢了,前面加上类型咱们才干知道咱们操作的地址指向的内容是多少字节。这样就能够把指针和地址区分隔。而别的需求留意的是C言语为了提高功率关于指针作出了开始地址对齐的要求,比方short指针地址需求被2整除,而long指针地址则需求被4整除。指针的存在让咱们对内存的操作有了自在性,但自在的一起也增加了危险性。比方假如咱们界说指针类型时类型不同,那么在自增或许自减时指针地址的偏移就会不同。比方char型的指针,履行自增后指针地址加1,而short型和long型则别离是加2和加4.假如咱们编写程序中没有考虑到这点,那么很简单导致过错。并且彼此接连界说的数组地址不一定接连。这些都是不小心就会犯错的当地。

参阅《删繁就简——单片机入门到通晓》

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/262595.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部