Tag: 数组

将文本文件读入C中的行数组中

使用CI想要读取文本文件的内容,以便在完成所有操作时完成一个字符串数组,其中第n个字符串表示文本文件的第n行。 文件的行可以任意长。 什么是实现这一目标的优雅方式? 我知道将一个文本文件直接读入一个适当大小的缓冲区的一些巧妙的技巧,但将其分解成行会使它变得更加棘手(至少就我所知)。 非常感谢!

用C ++初始化数组

我看到的每个地方都有人大声争辩说未经初始化的变量是坏的,我当然同意并理解为什么 – 但是; 我的问题是,有时候你不想这样做吗? 例如,取代码: char arrBuffer[1024] = { ‘\0’ }; 对整个arrays执行NULL操作是否会在不初始化的情况下使用arrays产生性能影响?

C中允许的最大静态数组大小是多少?

在我的算法中,我知道使用静态数组,没有动态数组。 但我有时会达到堆栈的极限。 我是对的,静态数组是否存储到堆栈中? 哪个参数会影响一个C程序的最大堆栈大小? 是否存在影响最大arrays大小的系统参数? 最大化没有。 元素取决于数组类型? 它取决于系统总RAM吗? 或者每个C程序都有一个静态的最大堆栈大小?

为什么在这种特定情况下在堆栈上分配大元素不会失败?

在C中在堆栈上分配int和大数组时,程序执行时没有错误。 但是,如果我事先在堆栈上初始化变量,则会发生段错误(可能是因为大型数组超出了堆栈大小)。 如果在声明数组后初始化变量,这对我来说是有意义的。 是什么导致这种行为,记忆明智? 我的印象是,只需在堆栈上声明一个变量,就会分配所需的空间,导致在分配非常大的数据类型时立即崩溃。 我怀疑它与编译器优化它有关,但它没有意义,考虑到我在第二个例子中也没有改变foo 。 我正在使用gcc 7.2.0进行编译, 没有设置任何标志 。 在Ubuntu 17.10上执行。 这运行没有错误: int main(){ int i; unsigned char foo [1024*1024*1024]; return 0; } 这会立即崩溃: int main(){ int i = 0; unsigned char foo [1024*1024*1024]; return 0; } 有人能告诉我这里发生了什么吗?

循环通过arraysMIPS汇编

我正在研究一个循环通过10个数字的数组的程序。 前9个元素的值大于0,第10个元素的值为0.当遇到0时,循环应该中断。 i=0; while(A[i]!=0) { A[i]=A[i]+1; i++; } 我知道如果寄存器的值等于0,我可以使用’beq’来打破循环。但是我不太了解操作内存中的值。 这是我第一次使用MIPS,你会发现它很乱。 如果你不能帮我解决,你能给我一些指示吗? .data #by default, the “data segment” starts at address 0x10010000 .word 1 .word 2 .word 3 .word 4 .word 5 .word 6 .word 7 .word 8 .word 9 .word 0 .text #instructions start below # MIPS assembly code lui $a0, 0x1001 # $a0 = […]

在声明时初始化一个联合数组

我正在尝试在声明时初始化以下union数组: typedef union { __m128d m; float f[4]; } mat; mat m[2] = { {{30467.14153,5910.1427,15846.23837,7271.22705}, {30467.14153,5910.1427,15846.23837,7271.22705}}}; 但是我发现了以下错误: matrix.c: In function ‘main’: matrix.c:21: error: incompatible types in initialization matrix.c:21: warning: excess elements in union initializer matrix.c:21: warning: (near initialization for ‘m[0]’) matrix.c:21: warning: excess elements in union initializer matrix.c:21: warning: (near initialization for ‘m[0]’) matrix.c:21: warning: […]

C – 在一行中更改结构数组的所有值

我可以声明一个结构: typedef struct { int var1; int var2; int var3; } test_t; 然后使用默认值创建这些结构结构的数组: test_t theTest[2] = { {1,2,3}, {4,5,6} }; 但是在我创建了数组后,有没有办法像上面一样改变值,只使用一行,明确指定每个值而没有循环?

2d数组行/列长度C.

我需要声明一个2d数组来表示棋盘的大小。 但是,我很难理解如何实际计算电路板的宽度和长度。 我想知道如何计算我的2d数组的行和列的大小 说, int boardSize[5][5] ? int main() { int boardSize[5][5]; int boardWidth=? int boardHeight =? createBoard(boardWidth, boardHeight); } int createBoard(int width, int height) { // code that actually creates board // } 对不起,因为没有具体的乞讨。 那么,在这里我需要计算boardwidth和boardheight变量? 我如何从上面声明的数组中做到这一点。 谢谢!

带有数组的C struct的内存布局

假设我有一个C结构定义如下: typedef struct { double array1[2]; } struct0_T; 记忆是如何布局的? struct只能保持一个指针或两个双打的值吗? 在我认为struct有一个指针之前,但今天我发现(令我惊讶的是)值存储在那里。 它在不同的编译器之间有所不同吗?

在C中创建数组并将指针传递给所述数组以实现

我已经阅读了几篇与我关于C的问题相关的post。这确实帮助我减少了我的错误。 但是,我仍然遇到其他post无法解决的问题。 基本上,这就是我想要做的。 在main中定义一个数组。 我将指向此数组的指针传递给函数。 此函数将打开一个文件,解析该文件,并将该文件中的信息放入其指针传入的数组中。好吧,它失败了。 我得到的错误是: work.c:12: error: array type has incomplete element type work.c: In function ‘main’: work.c:20: error: type of formal parameter 1 is incomplete work.c: At top level: work.c:25: error: array type has incomplete element type 整个代码如下。 但我认为你只需要关注我如何定义我的数组和指针等等。 #include #include //Defining Preprocessed Functions char readFile(char array[][], int, int); //void displayStudentInfo(int*); //Implements […]