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*,你只能提供长度给他,而不是去求长度,因为逻辑上地址可以随便取,即使越界。

  • 相关阅读:
    editplus 快捷键
    python 堆栈
    python 矩阵转置
    python 单向链表
    python 读空的json文件
    c++ 结构体
    手把手教你如何利用Meterpreter渗透Windows系统
    vuejs npm chromedriver 报错
    强大的开源网络侦查工具:IVRE
    在vue 中使用Stylus
  • 原文地址:https://www.cnblogs.com/flyingfish/p/708458.html
Copyright © 2011-2022 走看看