C 将静态数组传递给函数是否有效?
C 将静态数组传递给函数是否有效?,c,static-array,C,Static Array,我想知道以下情况:
我已经创建了一个静态数组,如上面的“main”函数所示。这有效吗?如果我用点和malloc来代替会更好吗
我知道它不使用堆栈,所以当我将数组传递到内部函数时,它会创建整个数组的副本还是只发送第一个条目的位置
在处理函数“myfunc”中的“array”时,我是直接处理静态定义的数组还是某些本地副本
在函数“myfunc”中,当我们将数组传递到函数“myfuncinfunc”中时,它是否会再次只将数组的第一个位置或完整副本发送到堆栈中
感谢阅读此问题,并将非常感谢任何帮助!我是
我想知道以下情况:
我已经创建了一个静态数组,如上面的“main”函数所示。这有效吗?如果我用点和malloc来代替会更好吗
我知道它不使用堆栈,所以当我将数组传递到内部函数时,它会创建整个数组的副本还是只发送第一个条目的位置
在处理函数“myfunc”中的“array”时,我是直接处理静态定义的数组还是某些本地副本
在函数“myfunc”中,当我们将数组传递到函数“myfuncinfunc”中时,它是否会再次只将数组的第一个位置或完整副本发送到堆栈中
感谢阅读此问题,并将非常感谢任何帮助!我是C语言的新手,试图从网上学习
我不认为它会比堆上的数组更高效或更低效
它衰减为指向第一个条目的指针
因此,它不是本地副本,而是阵列本身
同上
<>顺便说一下,如果<代码> < <代码> >代码> b>代码>是数组中的索引,请考虑使用<代码> SsieZiT<<代码>类型(它是<代码>未签名的INT/COD>保证大到足以索引数组)。
我不认为它会比堆上的数组更高效或更低效
它衰减为指向第一个条目的指针
因此,它不是本地副本,而是阵列本身
同上
<>顺便说一下,如果<代码> < <代码> >代码> b>代码>是数组中的索引,请考虑使用<代码> SsieZiT<<代码>类型(它是<代码>未签名的INT/COD>保证大到足以索引数组)。
我不认为它会比堆上的数组更高效或更低效
它衰减为指向第一个条目的指针
因此,它不是本地副本,而是阵列本身
同上
<>顺便说一下,如果<代码> < <代码> >代码> b>代码>是数组中的索引,请考虑使用<代码> SsieZiT<<代码>类型(它是<代码>未签名的INT/COD>保证大到足以索引数组)。
我不认为它会比堆上的数组更高效或更低效
它衰减为指向第一个条目的指针
因此,它不是本地副本,而是阵列本身
同上
<>顺便说一下,如果<代码> < <代码> >代码> b>代码>是数组中的索引,请考虑使用<代码> SsieZiT<<代码>类型(它是<代码>未签名的INT/COD>保证大到足以索引数组)。
我已经创建了一个静态数组,如上面的“main”函数所示。这有效吗?如果我用点和malloc来代替会更好吗
定义“有效”。由于分配/解除分配的运行时开销,静态分配的数组总是比动态数组快
在这种情况下,您分配了大量的100k字节,这可能是非常低的内存效率
此外,根据操作系统的不同,您的进程可能没有那么多可用的静态内存。因此,在桌面系统上,当您使用大量数据时,在堆上进行分配被认为是最佳做法
我知道它不使用堆栈,所以当我将数组传递到内部函数时,它会创建整个数组的副本还是只发送第一个条目的位置
在C中不能按值传递数组。因此,指向数组第一个元素的指针将保存在堆栈上并传递给函数
在处理函数“myfunc”中的“array”时,我是直接处理静态定义的数组还是某些本地副本
直接在静态数组上。同样,不能按值传递数组
在函数“myfunc”中,当我们将数组传递到函数“myfuncinfunc”中时,它是否会再次只将数组的第一个位置或完整副本发送到堆栈中
指向第一个元素的指针
我已经创建了一个静态数组,如上面的“main”函数所示。这有效吗?如果我用点和malloc来代替会更好吗
定义“有效”。由于分配/解除分配的运行时开销,静态分配的数组总是比动态数组快
在这种情况下,您分配了大量的100k字节,这可能是非常低的内存效率
此外,根据操作系统的不同,您的进程可能没有那么多可用的静态内存。因此,在桌面系统上,当您使用大量数据时,在堆上进行分配被认为是最佳做法
我知道它不使用堆栈,所以当我将数组传递到内部函数时,它会创建整个数组的副本还是只发送第一个条目的位置
在C中不能按值传递数组。因此,指向数组第一个元素的指针将保存在堆栈上并传递给函数
在处理函数“myfunc”中的“array”时,我是直接处理静态定义的数组还是某些本地副本
直接在静态数组上。同样,不能按值传递数组
在函数“myfunc”中,当我们将数组传递到函数“myfuncinfunc”中时,它是否会再次只将数组的第一个位置或完整副本发送到堆栈中
指向第一个元素的指针
我已经创建了一个静态数组,如上面的“main”函数所示。这有效吗?如果我用点和malloc来代替会更好吗
定义“有效”。由于分配/解除分配的运行时开销,静态分配的数组总是比动态数组快
在这种情况下,您分配了大量的100k字节,这可能是非常低的内存效率
此外,您的进程可能没有那么多可用的静态内存,dependi
#define BUFF_SIZE 100000
unsigned char buffer[BUFF_SIZE];
void myfunc(unsigned char[],int,int);
void myfuncinfunc(unsigned char[],int,int);
int main()
{
int a = 10, b = 10;
myfunc(buffer,a,b);
}
void myfunc(unsigned char array[],int a,int b)
{
int m,n;
//blah blah
myfuncinfunc(array,m,n);
}
void myfuncinfunc(unsigned char array[],int a, int b)
{
//blah blah
}