【问题标题】:How do i find these lengths of this integer arrays? [duplicate]我如何找到这个整数数组的这些长度? [复制]
【发布时间】:2022-01-03 23:42:36
【问题描述】:

我希望输出为 6 和 4 四个数组 A 和 B,但我不知道我在哪里犯了错误。我阅读了有关 StackOverflow 的教程,您可以通过执行 length = sizeof(array)/sizeof(array[0]) 来计算 int 数组长度,但它在我的程序中不起作用。无论我是否更改数组,sizeof(array) 和 sizeof(array[0]) 的值都保持不变,如下所示。

#include<stdio.h>
#include<string.h>

int arraychecker(int array[])
{

    int Length =sizeof(array)/sizeof(array[0]);
    int arraylength = sizeof(array);
    int arraylength0 = sizeof(array[0]);
    
    printf("%d,%d,%d\n", Length, arraylength, arraylength0);
    
}

int main()
{
    int a[]= {2,1,3,4,9,33};
    int b[]={2,55,3,2};
    arraychecker(a);
    arraychecker(b);
    
    return(0);
}

输出:2,8,4 2,8,4

【问题讨论】:

  • 在函数中找不到长度,因为数组在传递给函数时会衰减为指针,丢失长度信息。您需要将长度作为额外参数传递。

标签: arrays c sorting multidimensional-array string-length


【解决方案1】:

补充 Eugene 的评论,一些常见的做法是将长度也存储在数组中。

【讨论】:

  • 不要使用答案来解决发布 cmets 的限制。如果它不是一个完整的答案,则不应将其作为一个发布。除此之外,将长度存储在数组中根本不是“常见做法”,而且充其量仅在数组的类型适合存储长度时才有效。
  • 是的,我注意到了,我已经通过直接计算主函数中的长度解决了这个问题。感谢您的回答!
猜你喜欢
  • 2019-04-29
  • 2016-06-24
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 2017-08-02
  • 2023-03-17
相关资源
最近更新 更多