相关疑难解决方法(0)

传递数组的C大小

可能重复:
如何查找sizeof(指向数组的指针)

我知道sizeof运算符在编译时被评估并替换为常量.鉴于此,如何在程序的不同点传递不同数组的函数是否可以计算它的大小?我可以将它作为参数传递给函数,但如果我不是必须的话,我宁愿不必添加另一个参数.

这是一个例子来说明我的要求:

#include <stdio.h>
#include <stdlib.h>

#define SIZEOF(a) ( sizeof a / sizeof a[0] )


void printarray( double x[], int );

int main()
{
        double array1[ 100 ];


        printf( "The size of array1 = %ld.\n", SIZEOF( array1 ));
        printf( "The size of array1 = %ld.\n", sizeof array1 );
        printf( "The size of array1[0] = %ld.\n\n", sizeof array1[0] );

        printarray( array1, SIZEOF( array1 ) );

        return EXIT_SUCCESS;
}


void printarray( double p[], int s )
{
        int i;


        // …
Run Code Online (Sandbox Code Playgroud)

c arrays function sizeof

19
推荐指数
3
解决办法
3万
查看次数

在运行时确定的数组大小

我看到一些像这样的代码:

int foo()
{
  int sz = call_other_func();
  char array[sz];

  /* whatever */
}
Run Code Online (Sandbox Code Playgroud)

我很困惑这将如何工作,甚至编译gcc.数组的大小应该是静态的并在编译时确定,不是吗?

c arrays gcc variable-length-array

6
推荐指数
1
解决办法
306
查看次数

标签 统计

arrays ×2

c ×2

function ×1

gcc ×1

sizeof ×1

variable-length-array ×1