【问题标题】:How can I get the size of an array in C / Objective-C?如何在 C/Objective-C 中获取数组的大小?
【发布时间】:2009-05-15 12:13:52
【问题描述】:

我有这个数组:

unsigned char* data = CGBitmapContextGetData(cgctx);

然后我尝试使用 sizeof(data) 获取大小,但这将返回一个无意义的值 4。数据包含大量信息。那不能只是 4 ;)

我什至在 data[8293] 处获得信息......所以......根本不是 4 个元素。

【问题讨论】:

    标签: c objective-c arrays


    【解决方案1】:

    sizeof 返回 4,因为您的变量被声明为指针,而不是 C 数组 (char data[1024])。

    要获得所需的大小,请使用 CGBitmapContextGetHeightCGBitmapContextGetWidth

    【讨论】:

    • 您需要的不仅仅是这两个功能。请参阅 Mykola 的回答。
    【解决方案2】:

    尝试使用

    CGBitmapContextGetBitsPerPixel
    CGBitmapContextGetHeight
    CGBitmapContextGetWidth
    

    CGBitmapContextGetBytesPerRow
    CGBitmapContextGetHeight
    

    【讨论】:

    • 后者更好;根据颜色空间、对齐方式等,每行末尾可能会有额外的未使用字节。我以前也被这个咬过(虽然很多年前,玩过Linux framebuffer直接渲染)。
    【解决方案3】:

    4的值不是废话,就是你要的指针的大小。在 C 中没有办法找出指针指向的数组的大小。

    【讨论】:

      【解决方案4】:

      您正在获取指针的大小,而不是数组的大小。仅当您确实有要测量的数组时,才对数组使用 sizeof() ;)

      【讨论】:

        【解决方案5】:

        您混淆了指针和它指向的对象。

        【讨论】:

          猜你喜欢
          • 2016-11-21
          • 2021-03-23
          • 1970-01-01
          • 2020-07-24
          • 2013-10-22
          • 1970-01-01
          • 2013-04-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多