Tag: 数组

使用带指针的数组注释

我目前无法理解以下场景:我有一个多维数组的字符串,我想通过仅使用指针来解决它,但我总是在指针上使用数组注释时出现分段错误。 这只是一个示例代码我想在pthread中使用3D数组,所以我想通过结构作为指针传递它,但它只是不起作用,我想知道为什么? 我认为指针和数组在function上是等价的? 以下是示例代码: #include void func(unsigned char ***ptr); int main() { // Image of dimension 10 times 10 unsigned char image[10][10][3]; unsigned char ***ptr = image; memcpy(image[0][0], “\120\200\12”, 3); // This works as expected printf(“Test: %s”, image[0][0]); func(image); return 0; } void func(unsigned char ***ptr) { // But here I get a Segmentation Fault […]

将动态分配的数组作为参数传递给C语言

所以…我在我的主要上有一个动态分配的数组: int main() { int *array; int len; array = (int *) malloc(len * sizeof(int)); … return EXIT_SUCCESS; } 我还想构建一个函数,用这个动态分配的数组做一些事情。 到目前为止我的function是: void myFunction(int array[], …) { array[position] = value; } 如果我将其声明为: void myFunction(int *array, …); 我还能做到: array[position] = value; 或者我必须这样做: *array[position] = value; …? 此外,如果我正在使用动态分配的矩阵,哪一个是声明函数原型的正确方法: void myFunction(int matrix[][], …); 要么 void myFunction(int **matrix, …); …?

传递参数使得指针来自整数

我找不到我的问题。 不断给我这些错误: “c:2:5: note: expected ‘int *’ but argument is of type ‘int'” “c:28:1: warning: passing argument 1 of ‘CountEvenNumbers’ makes pointer from integer without a cast [enabled by default]” 这是代码: 1 #include 2 int CountEvenNumbers(int numbers[], int length); 3 int main(void) 4 { 5 int length; 6 int X;int Z; int Y; int W; […]

#define ArrayLength(x)(sizeof(x)/ sizeof(*(x)))是什么意思?

这条线究竟意味着什么? 很清楚定义是什么,但我不明白为什么在分母处传递x的指针: #define ArrayLength(x) (sizeof(x)/sizeof(*(x))) 谢谢

如何获取C指针数组的长度?

可能重复: 函数参数中的数组长度 有没有像C can数组那样的Java can .length方法? 谢谢。

C:将unsigned char数组转换为signed int(反之亦然)

我正在尝试将unsigned char数组缓冲区转换为signed int(反之亦然)。 以下是演示代码: int main(int argv, char* argc[]) { int original = 1054; unsigned int i = 1054; unsigned char c[4]; int num; memcpy(c, (char*)&i, sizeof(int)); //num = *(int*) c; // method 1 get memcpy((char *)&num, c, sizeof(int)); // method 2 get printf(“%d\n”, num); return 0; } 1)我应该使用哪种方法从unsigned char []到int? 方法1得到或方法2得到? (或任何建议) 2)如何将int原始转换为unsigned char […]

如何通过编译器在C中初始化(到零)数组?

免责声明:我可能误解了如何创建,分配和初始化数组。 如果是这样,请尝试在两行之间阅读。 如果我通过做创建一个数组 int array[15] = {0}; 编译器的所有array元素都将元素初始化为0 。 这是如何通过编译器完成的? 编译器是否插入一个循环来迭代分配的内存并将每个元素设置为零? 尺寸会影响性能吗? 即初始化双倍大小(30)的数组需要更长的时间吗? 多久了? 双? 对数? 2的力量? 只是出于好奇而退出。

从C中的函数返回多维数组

从c中的函数返回多维数组的最佳方法是什么? 假设我们需要在函数中生成一个多维数组并在main中调用它,最好将它包装在一个结构中,还是只返回一个指向堆内存的指针? int *create_array(int rows, int columns){ int array[rows][columns] = {0}; return array; } int main(){ int row = 10; int columns = 2; create_array(row,columns); } 上面的代码,只是为了勾勒出我想到的基本程序。

结构数组 – 删除/添加元素和打印

对于以下代码 struct orderSlip { char source[64]; char destination[64]; char item[64]; int position; }; //global struct orderSlip data[100]; 除了以下方法之外,还有其他方法可以打印出每个元素的数据: printf(“%s\n”,data[0].source); printf(“%s\n”,data[0].destination); printf(“%s\n”,data[0].item); printf(“%i\n\n”, data[0].position); printf(“%s\n”,data[1].source); printf(“%s\n”,data[1].destination); printf(“%s\n”,data[1].item); printf(“%i\n”, data[1].position); 等等 for(int n = 0; n< 3; n++) { printf("%s\n",data[n].source); printf("%s\n",data[n].destination); printf("%s\n",data[n].item); printf("%i\n\n", data[n].position); } 要删除和添加,我是否必须创建一个动态的结构数组? 如果是这样,最简单的语法是什么? 像这个c ++代码的东西 int * bobby; bobby = new int [5]; […]

C数组比较

用于比较数组(在C中)以使用来自string.h memcmp的string.h吗? 我想在unit testing中比较整数和双精度数组 我不确定是否使用类似的东西: double a[] = {1.0, 2.0, 3.0}; double b[] = {1.0, 2.0, 3.0}; size_t n = 3; if (! memcmp(a, b, n * sizeof(double))) /* arrays equal */ 或写一个定制的is_array_equal(a, b, n)类型函数?