Tag: 多维数组

从C ++中的函数返回2d数组

我有一个声明如下的函数: unsigned char** Classifier::classify(){ //… unsigned char **chars = new unsigned char *[H]; for(int i = 0; i < H; i++) chars[i] = new unsigned char[W*3]; //… return &chars; //note: when this is "return chars;" I get the following: cannot convert 'unsigned char*' to 'unsigned char**' in return 这给了我警告: Classifier.cpp: In member function ‘unsigned char** […]

如何初始化unsigned char数组?

我真正想要实现的是一组动态字节模式,当我缓冲二进制文件时,我可以将其用作模式搜索器。 但我现在开始基本。 我有以下代码,我基于StackOverflow上的示例。 如何在C中初始化多维Char数组? typedef unsigned char BYTE; int main() { BYTE *p[2][4] = { {0x44,0x58,0x54,0x31}, {0x44,0x58,0x54,0x00} }; return 0; } 我使用mingw32 for Windows编译它。 D:\> gcc example.c -o example.exe 我尝试编译时收到以下警告。 example.c: In function ‘main’: example.c:6:3: warning: initialization makes pointer from integer without a cast [enabled by default] example.c:6:3: warning: (near initialization for ‘p[0][0]’) [enabled by […]

在C中通过引用传递二维数组

我需要家庭作业问题的帮助。 作业的描述是: 使用参考调用方法在C中设计程序,该方法生成由一个学期内给出的M个学生和N个测验组成的class级的成绩统计。 测验都具有相同的权重,每个测验中的分数不超过10分。 程序执行时,程序将按指示的顺序执行以下操作: 要求用户在键盘上键入学生数M和测验数N,其中M代表行数,N代表二维数组中的列数x [M] [N] of浮点数字。 要求用户在键盘上键入数组x [M] [N]的所有元素的值。 在控制台上显示输入的数组元素值的M行和N列。 在控制台上生成并显示一维数组p [M]的元素,其中该数组p [M]的每个元素代表M个学生中每个学期的平均成绩。 在控制台上生成并显示一维数组q [N]的元素,其中q [N]的每个元素代表N个测验中每个类中的平均等级。 在整个学期中,在控制台上生成并显示整个class级的平均成绩z。 这是我到目前为止所做的代码: #include #define students 300 #define quizzes 20 void averageGradeOfStudents(int M, int N, float p[], float *xPtr); float averageGradeOfClass(); float averageGradeOfWholeClass(); int main() { int M, N; float x[students][quizzes]; printf(“Enter the number students (Maximum: 300): […]

在c中对2维数组进行排序

我正在尝试对二维数组进行排序。原始数组是 5 0 3 4 1 2 3 1 1 4 2 2 3 3 1 排序时,应该是这样的 3 1 1 3 3 1 4 2 2 4 1 2 5 0 3 这是我用来尝试实现冒泡排序的代码,我代表行数。 int x,y,z,j,temp1,temp2,temp3; for(x=0;x<i;x++) { for (j=0;ja[j+1][0]) { temp1=a[j][0]; temp2=a[j][1]; temp3=a[j][2]; a[j][0]=a[j+1][0]; a[j][1]=a[j+1][1]; a[j][2]=a[j+1][2]; a[j+1][0]=temp1; a[j+1][1]=temp2; a[j+1][2]=temp3; } } } 它仍然没有排序,任何帮助将不胜感激。

我可以将char * 转换为char 吗?

我现在自己纠正了这个程序。 这仍然是 – 回答的问题:我有一个二维数组的字符,每个数组都包含一个字。 我逐字逐句地将char*与一个函数分开,将它们放在数组中。 我的问题是它不打印单词而是随机字符。 可能是指针问题? 我不确定char*[20]到char[][20]的转换,因为我想过滤char*spamArray[20]到char[][20] 我需要将char*[20]传递给具有参数char[][20]的filter。 这是电话: char* spam = “this is a string”; //spam isn’t actually initialized this way, but this is just for explaining what it contains //OLD QUESTION CODE:char (*spamArray)[20] = (char(*)[20])malloc((sizeof(char) * 20) * nSpam); //new: char spamArray[nSpam][20]; //nSpam is the number of words splitstring(spam, &spamArray[0], nSpam); 这是函数splitstring成单词 […]

在没有VLA的情况下传递可变大小的多维数组

(这是对这个问题的跟进。) 我试图理解将多维数组传递给C中的函数的“最佳实践”(或实际上是任何实践)。当然这取决于应用程序,所以让我们考虑编写一个函数来打印一个可变大小的二维数组。 特别是,我对如何在下面的代码中编写函数printArry(_____)感兴趣。 上面引用的问题中的答案使用C的可变长度数组(VLA)特性。 这些特征在C98标准中不存在 ,并且在C11标准中是可选的(它们似乎也不在C ++ 11中编译)。 如何在不使用VLAfunction的情况下回答这个问题? 传递一个二维数组似乎是一个相当基本的任务,所以我无法想象没有一个合理的方法。 void printArry(_____){ /* what goes here? */ } int main(void){ int a1=5; int b1=6; int a2=7; int b2=8; int arry1[a1][b1]; int arry2[a2][b2]; /* set values in arrays */ printArry(arry1, a1, b1); printArry(arry2, a2, b2); return 0; }

随机漫步10x10arrays

我有一个问题找出这个问题的算法,已经尝试了几天没有成功,这里是我试图获得的图片: http://sofzh.miximages.com/c/X70nX.png 这是我的代码尝试了许多不同的解决方案,但总是陷入同一点:(对不起混合语言,重要的部分是英语) ps我不应该使用函数来解决这个问题只有循环和数组。 经过多次修复后编辑它可以行走但很少崩溃任何想法吗? #include #include #include int main(void){ char box[10][10]; int i,j; int move,row,col; char letter=’A’; srand(time(NULL)); printf(“\n\tSTART\n\n”); for(i=0;i < 10 ;i++)/* righe */ { for(j=0;j < 10;j++) /* colonne */ { box[i][j] = '.'; /* assegno . a tutti gli elementi dell array */ if(j == 9) printf("%c%c\n", box[i][j]); /* giustifico ogni […]

处理矩阵的边界单元

我想处理nxn矩阵的每个边界单元格。 例如,对于int数组[5] [5]; 算法应该处理每个x元素,因此它具有forms xxxxxx – – – x x – – – x x – – – x xxxxx 处理这种细胞的最佳方法是什么? 如果它是一个三维数组怎么样? 在此先感谢,并对矩阵表示感到抱歉。 编辑我想只使用一个循环以避免嵌套循环或递归。

多维数组的别名

众所周知,2D数组是一个数组数组,标准要求它是一个连续分配的非空对象集 (6.2.5类型§20) – 这里的对象是一维数组。 众所周知,对于所有常见的实现,对于T arr2d[X][Y] ,以下等式是正确的,其中T是一个类型,X和Y的积分常数: (char *) &arr2d[i][j] == (char *) &arr2d[0][0] + i * Y * sizeof(T) + j * sizeof(T) 以上让我们认为可以允许对两个相同大小的二维数组和一维数组进行别名,或者甚至是另一个总大小相同的二维数组: 例如,以下程序编译并运行时没有警告,并给出预期输出: #include int main() { int i, j, k=0; int arr2d[3][4]; // array of 3 array of 4 ints int *arr1 = &arr2d[0][0]; // pointer to first element of an […]

使用带指针的数组注释

我目前无法理解以下场景:我有一个多维数组的字符串,我想通过仅使用指针来解决它,但我总是在指针上使用数组注释时出现分段错误。 这只是一个示例代码我想在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 […]