zoukankan      html  css  js  c++  java
  • 如何不传长度测出指针指向目标的个数?

    这个问题是个很基本的问题,却是经常搞混。

    今天找了资料把它给搞明白了,免得下次还犯错。

    看了这个文章如何知道一个char*里有多少个字符这么说:

      sizeof是编译时的概念。你可以把它想象成宏。编译时sizeof(xxx)被xxx的大小所替代。  所以sizeof(char   *)被4替代(指针的大小是4)  
      char   str[255];  
      sizeof(str);就可以得到数组的大小  
      这些在编译时候就可以确定下来了。  
      而strlen是一个运行时的函数  
      char   *p   =   "hehe";  
      strlen(p);这个需要一步步地运行,得到p的长度。
     

     

    按照我的理解来总结:

    指针是一种自己定义的类型,和其他类型一样,但是它除过自身包含一个DWORD长度的数值来指示地址之外,还能够识别所指向的目标的类型。仅此而已,他本身并不包含长度等信息,也无法获得长度等信息。字符串这个特例外,其他都需要自己维护长度。

    要获取指针所指内容的长度是不可行的,除非是char*,因为它有\0做结束符
    其他的比如int*,你只能提供长度给他,而不是去求长度,因为逻辑上地址可以随便取,即使越界。

  • 相关阅读:
    四种nlogn排序算法代码
    HDU1421
    HDU1789
    HDU1978
    HDU2059
    HDU2089
    深入理解数组与指针的区别
    存储字节对齐问题
    h5新特性<data*>
    浏览器的标准模式和怪异模式
  • 原文地址:https://www.cnblogs.com/flyingfish/p/708458.html
Copyright © 2011-2022 走看看