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

  • 相关阅读:
    java代码配置sqlserver数据源及连结的demo例子
    mysql配置 是否忽略大小写 lower_case_table_names
    查询30天以内的数据SQL
    nginx
    PCB随笔
    chengxu
    Powershell
    对象模型
    Thinking UML
    排序初级排序
  • 原文地址:https://www.cnblogs.com/flyingfish/p/708458.html
Copyright © 2011-2022 走看看