Tag: 数组

用C创建大型数组

我的问题与C语言有关。 我必须创建一个大约200万个元素的大数组,但计算机会出现“分段错误(Core dumped)”错误。 我只想说: int integer_array[2000000]; float float_array[2000000]; 我确信这与分配给数组的内存有关,但我无法找到正确的解决方案。

如何通过Java中的指针算法访问数组元素

鉴于C中的以下声明,我可以对地址应用“+”,并访问其他元素。 char toto[5]; 换句话说,应用此运算符+ toto+0x04 在Java中访问不同的数组元素。 还有另一种在java中实现此操作的方法吗? 非常感谢

C中的数组赋值使用指针算法

当我使用指针算法访问特定元素时,如何更改数组中的值? #include int main() { int a[3] = {1, 1, 1}, b[3] = {2, 2, 2}; a++ = b++; // How can I get this to work so a[1] = b[1]? return 0; }

计算字符串中数字的出现次数

所以我试图计算一个数组中每个数字的出现次数。 到目前为止,我的代码如下所示: #include #include int main() { int numbers [10]= {1, 4, 5, 5, 5, 6, 6, 3, 2, 1}; int count = 0; for(int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (numbers[i] == numbers[j]) { count++; } } printf("Number %d has occured […]

在sqlite的回调函数中动态重新分配2个dim数组

我正在研究sqlite-.dll用于教育目的。 我试图在每次使用数据库中的新行调用回调函数时动态地在我的2维数组中添加一行。 (例如SELECT * FROM CUSTOMER)。 然后,应将此数组中存储的数据作为C接口返回。 SQLCONTROL_API char** sql_execQuery(char *dbName, char *sqlStatement) { char **a = 0; /*Some sqlite stuff*/ int rc = sqlite3_exec(db, sqlStatement, callback, &a, &zErrMsg); return a; } 使用回调函数: static int callback(void *data, int argc, char **argv, char **azColName) { char **old = (char **)data; int num_rows = sizeof(old) / sizeof(old[0]); […]

是否有可能在C中总是在数组大小上产生1的段错误?

假设你分配一些数组arr size n ,如下所示: int arr[n]; // Allocated fine printf(“%d”, arr[n]); // Segfault if possible 是否存在这样的数字n ,我总是可以在printf线上触发段错误? 这可能是某些操作系统特有的。 我知道它的未定义行为,并且我知道在访问它时将其更改为超出边界会影响另一个内存区域,这可能会导致我以后出现重大问题。 我的教授说它并不总是会出现段错误,而且我很好奇是否无论如何都要在某种情况下使用某种类型的操作系统或计算机创建一个相当大小的数组,每次都可以进行可靠的段错误。 这是可能的还是没有? 是否有一些我可以创建的条件会导致单个出界访问始终触发段错误。 理论上可能总是如此吗? 但是在实践中不会一直发生吗?

C指针帮助:数组/指针等效

在这个玩具代码示例中: int MAX = 5; void fillArray(int** someArray, int* blah) { int i; for (i=0; i<MAX; i++) (*someArray)[i] = blah[i]; // segfault happens here } int main() { int someArray[MAX]; int blah[] = {1, 2, 3, 4, 5}; fillArray(&someArray, blah); return 0; } …我想填充数组someArray,并在函数外部保留更改。 这是一个非常大的家庭作业的一部分,这个问题解决了这个问题,而不允许我复制解决方案。 我得到一个函数签名,接受一个int **作为参数,我应该编写逻辑来填充该数组。 我的印象是fillArray()函数中的dereferencing&someArray会给我所需的数组(指向第一个元素的指针),并且使用该数组上的括号数组元素访问将为我提供需要分配的必要位置。 但是,我无法弄清楚为什么我会遇到段错误。 非常感谢!

如何在C中创建具有两个可变大小数组的结构

我正在编写一个轻量级序列化函数,需要在其中包含两个可变大小的数组。 我该如何追踪每个的大小? 我该如何定义结构? 我错了吗? 编辑:结果必须是连续的内存块

数组的大小…在C / C ++中?

好的,所以你有和数组A [] …在某些函数中传递给你,比如使用以下函数原型: void foo(int A[]); 好的,正如你所知,在不知道某种结束变量或已知大小的情况下很难找到该数组的大小…… 那么这里是交易。 我似乎有些人在挑战问题上弄明白了,我不明白他们是如何做到的。 我当然无法看到他们的源代码,这就是我在这里问的原因。 有谁知道甚至可以远程查找该数组的大小? 也许就像free()函数在C中做的那样? 你觉得这怎么样?? template int ArrLength(E(&)[size]){return size;} void main() { int arr[17]; int sizeofArray = ArrLength(arr); }

C – 由变量定义的长度的静态数组

我实际上正在使用C语言进行分配,为了实现我的需要,我需要使用一个静态数组,让我们说 static int array[LEN]; 诀窍是这个数组长度LEN是在main()计算的。 例如 static int LEN; void initLen(int len) { LEN = len; } static int array[LEN]; 在initLen中调用initLen ,并使用用户给出的参数计算len 。 这个设计的问题是我得到了错误 threadpool.c:84: error: variably modified ‘isdone’ at file scope 该错误是由于我们无法使用变量作为长度初始化静态数组。 为了使它工作,我正在定义一个LEN_MAX并写 #define LEN_MAX 2400 static int array[LEN_MAX] 这个设计的问题是我暴露自己的缓冲区溢出和segfaults 🙁 所以我想知道是否有一些优雅的方法来初始化一个具有确切长度LEN的静态数组? 先感谢您!