Tag: 数组

比较两个相同长度的int数组的最佳方法是什么?

将int数组b和c与a进行比较的最佳方法是什么? int a[] = {0,1,0,0,1}; int b[] = {0,1,0,0,1}; int c[] = {1,1,0,0,1}; b和c只是示例,假设它们可以是0和1的任意组合。 我试图检测与a相同的数组。 我用谷歌搜索了一段时间,但没有找到满意的答案。 这是我意识到的初学者问题,谢谢你的耐心等待。

动态分配用户输入的字符串

我正在尝试编写一个执行以下操作的函数: 启动输入循环,每次迭代打印’> ‘ 。 取用户输入的任何内容(未知长度)并将其读入字符数组,必要时动态分配数组的大小。 用户输入的行将以换行符结束。 在字符数组的末尾添加一个空字节’\0’ 。 当用户输入一个空行时,循环终止: ‘\n’ 这是我目前写的: void input_loop(){ char *str = NULL; printf(“> “); while(printf(“> “) && scanf(“%a[^\n]%*c”,&input) == 1){ /*Add null byte to the end of str*/ /*Do stuff to input, including traversing until the null byte is reached*/ free(str); str = NULL; } free(str); str = NULL; } […]

动态分配数组解释

这是我的老师向我们展示的示例代码“如何在C中动态分配数组?”。 但我不完全理解这一点。 这是代码: int k; int** test; printf(“Enter a value for k: “); scanf(“%d”, &k); test = (int **)malloc(k * sizeof(int*)); for (i = 0; i < k; i++) { test[i] = (int*)malloc(k * sizeof(int)); //Initialize all the values } 我想在C中,要定义一个数组,你必须把[]放在名字之后,那么究竟是什么是int** test ; 它不仅仅是一个指针指针吗? 而malloc()行也让我感到困惑…..

在C中访问数组元素的不同方式

我是C编程课程的助教,我遇到了以下C代码: char str[] = “My cat’s name is Wiggles.”; printf(“%c %c %c %c\n”, str[5], *(str + 5), *(5 + str), 5[str]); 我之前从未遇到过最后一个论点( 5[str] ),我的教授也没有。 我不认为它在K&R和C Primer Plus中被提到过。 我在一组技术面试问题中找到了这段代码。 有谁知道为什么C允许你以这种方式访问​​数组元素? 我从未听说过括号集之外的索引以及括号内的数组名称。 对你的帮助表示感谢!

如何为2Darrays动态分配连续的内存块

如果我像这样分配一个二维数组[N] [N] ; 它将分配一个连续的内存块。 但是,如果我尝试动态这样做: int **a = malloc(rows * sizeof(int*)); for(int i = 0; i < rows; i++) a[i] = malloc(cols * sizeof(int)); 这样可以在行中的元素之间保持单位跨度,但行之间可能不是这种情况。 一种解决方案是从2D转换为1D,除此之外,还有另一种方法吗?

char array = char数组的问题

我有: char message1[100]; char message2[100]; 当我尝试执行message1 = message2 ,我收到错误: 从类型’char *’分配类型’char[100]’时不兼容的类型 我有类似的function if(send(clntSocket, echoBuffer, recvMsgSize, 0) != recvMsgSize){ DieWithError(“send() failed”) } 插图中。 这些可能会以某种方式弄乱吗? 🙁 我有一种感觉,也许你不能做char数组或其他东西,但我环顾四周,找不到任何东西。

将整数转换为数组

我试图将C中的整数转换为包含该数字的每个数字的数组 即如果我有 int number = 5400 我该怎么办? int numberArray[4] 哪里 numberArray[0] = 0; numberArray[1] = 0; numberArray[2] = 4; numberArray[3] = 5; 感激地收到任何建议。

找出数组中的重复元素

存在大小为n的数组,并且数组中包含的元素在1和n-1之间,使得每个元素出现一次并且仅一个元素出现多于一次。 我们需要找到这个元素。 虽然这是一个非常常见的问题,但我仍然没有找到合适的答案。 大多数建议是我应该将数组中的所有元素相加,然后从中减去所有索引的总和,但如果元素的数量非常大,这将不起作用。 它会溢出。 关于使用异或门dup = dup ^ arr[i] ^ i ,也有一些建议,我不清楚。 我已经提出了这个算法,这是一个增加算法的增强,并将在很大程度上减少溢出的机会! for i=0 to n-1 begin : diff = A[i] – i; sum = sum + diff; end diff包含duplicate元素,但是使用这个方法我无法找到重复元素的索引。 为此,我需要再次遍历数组,这是不可取的。 任何人都可以提出一个更好的解决方案,不涉及添加方法或XOR方法在O(n)中工作?

C中止陷阱6错误

我有这个代码: void drawInitialNim(int num1, int num2, int num3) { int board[2][50]; //make an array with 3 columns int i; // i, j, k are loop counters int j; int k; for(i=0;i<num1+1;i++) //fill the array with rocks, or 'O' board[0][i] = 'O'; //for example, if num1 is 5, fill the first row with 5 rocks for […]

char数组中可以有多少个字符?

#define HUGE_NUMBER ??? char string[HUGE_NUMBER]; do_something_with_the_string(string); 我想知道什么是我可以添加到char数组的最大数量,而不会冒任何潜在的内存问题,缓冲区溢出等风险。 我想让用户输入,也许最大可能。