Tag: 数组

数组参数是否传递给函数而不是常量指针?

考虑一下代码: void foo(char a[]){ a++; // works fine, gets compiled //… } 现在,考虑一下: void foo(){ char a[50]; a++; // Compiler error //… } 我听说一个数组相当于一个常量指针,不能递增,因为它不是一个左值… 那么为什么第一个代码被编译,是这样的,因为函数的数组参数作为指针传递,即T []被转换为T *以传递..所以,foo(a)传递a作为指针。 但它是否再次转换为T [],因为声明为: void foo(char a[]);

在函数内动态分配2D数组(使用指针返回已分配对象的地址)

我想知道如何使用函数参数将指针传递给动态分配的数组。 该函数应该分配数组10×10(为简单起见,跳过检查)。 这可能吗? 我究竟做错了什么? 提前致谢。 int array_allocate2DArray ( int **array, unsigned int size_x, unsigned int size_y) { array = malloc (size_x * sizeof(int *)); for (int i = 0; i < size_x; i++) array[i] = malloc(size_y * sizeof(int)); return 0; } int main() { int **array; array_allocate2DArray (*&array, 10, 10); }

没有维度的全局整数数组

当我们定义没有维度的全局数组时,这个概念是什么?这表示输出为16。 #include #include int arr[]; int main(int argc, char *argv[]) { arr[1] = 16; printf(“%d\n”,arr[1]); system(“PAUSE”); return 0; } 甚至sizeof(arr)都不起作用。 为什么?

以递归方式查找数组的最大元素

考虑这段代码,它计算数组的最大元素。 #include int maximum(int arr[], int n) { if (n == 1) { return arr[0]; } else { int max = maximum(arr, n-1); printf(“Largest element : %d\n”, max); return 5; // return arr[n-1] > max ? arr[n-1] : max; } } int main() { int array[5] = {5, 23, 28, 7, 1}; printf(“Maximum element of […]

C数组的范围初始化

这个代码在哪里工作的非常简单的问题? static void *gostruct[] = { [0 … 255] = &&l_bad, [‘\t’] = &&l_loop, [‘ ‘] = &&l_loop, [‘\r’] = &&l_loop, [‘\n’] = &&l_loop, [‘”‘] = &&l_qup, [‘:’] = &&l_loop,[‘,’] = &&l_loop, [‘[‘] = &&l_up, [‘]’] = &&l_down, // tracking [] and {} individually would allow fuller validation but is really messy [‘{‘] = &&l_up, […]

灵活的arrays成员(零长度arrays)

参考GCC的零长度arrays说明: 当struct是可变长度对象的头时,这尤其有用。 这正是我的情况。 此外,我关心的是我的结构在堆中的对齐。 在这种情况下,我仍然不明白零长度数组有什么用处。 它们与这种特殊情况有什么关系? 编辑: 我可以在那里放置尽可能多的“数据”吗?

如何在C99运行时计算可变长度数组的大小?

在C89中,数组的长度在编译时是已知的。 但在C99中,对于可变长度数组,数组的长度在运行时可能是未知的。 那怎么计算呢? 为什么不能以相同的方式计算动态分配的数组的长度?

C:查找数组中的元素数量

在C中:在将结构发送到函数后,如何找到结构数组中的元素数? int main(void) { myStruct array[] = { struct1, struct2, struct3, struct4, struct5, struct6 }; printf(“%d\n”, sizeof(array)); printf(“%d\n”, sizeof(array[0])); f(array); } void f(myStruct* array) { printf(“%d\n”, sizeof(array)); printf(“%d\n”, sizeof(array[0])); } 由于某种原因,main中的printf显示的结果与f中的printf不同。 我需要知道数组中有多少个元素。

如何从指针变量计算数组的大小?

我有数组的指针(数组在内存中)。 我可以从指针计算数组的大小吗? 我实际上不知道数组在内存中的位置。 我只得到指针地址(假设9001)使用该地址我必须计算数组大小。 谢谢。

C中的可变大小数组

我想我的问题是以下是否有效C. int main(void) { int r = 3; int k[r]; return 0; } 如果是这样,有人会解释为什么它在Microsoft的C编译器中不起作用,而在GCC中,以及它被添加到C标准时。 谢谢