Tag: 数组

动态分配C中的数组数组

我并不真正理解C中的一些基本内容,比如动态分配数组数组。 我知道你可以这样做: int **m; 为了声明一个二维数组(随后将使用一些* alloc函数分配)。 也可以通过*(*(m + line) + column) “轻松”访问它。 但是我应该如何为该数组中的元素赋值? 使用gcc以下语句m[line][column] = 12; 因故障而失败。 任何文章/文档将不胜感激。 🙂

奇怪的数组初始化表达式?

以下代码是什么意思? 代码来自GCC的回归测试套件。 static char * name[] = { [0x80000000] = “bar” };

printf从char数组中添加额外的`FFFFFF`到hex打印

请考虑以下简化代码。 我想从文件中提取一些二进制数据/流,并以hex格式将其打印到标准输出。 我有额外的3个字节0xFFFFFF 。 怎么了? 多余的字节来自哪里? 产量 in: 2000FFFFFFAF00690033005A00 out: 2000FFFFFFAF00690033005A00 program.c #include #include int main(int argc, char** argv) { int i; char raw[10] = {0x20,0x00,0xAF,0x00,0x69,0x00,0x33,0x00,0x5A,0x00}; FILE *outfile; char *buf; printf(“in:\n\t”); for( i=0; i<10; i++ ) printf("%02X", raw[i]); outfile = fopen("raw_data.bin", "w+b"); fwrite(raw, 1, 10, outfile); buf = (char *) malloc (32 * sizeof(char)); fseek(outfile, […]

是否可以在函数内部分配数组并使用引用返回它?

我尝试过使用tripple指针,但它仍然失败。 码: #include #include int set(int *** list) { int count, i; printf(“Enter number:\n”); scanf(“%d”, &count); (*list) = (int **) malloc ( sizeof (int) * count); for ( i = 0; i<count;i++ ) { (**list)[count] = 123; } return count; } int main ( int argc, char ** argv ) { int ** list; int […]

数组衰减为指针的例外情况?

我在很多post中都看到“在大多数情况下,数组名称会衰减为指针”。 我可以知道在什么情况下/数组名称表达式不会衰减成指向其第一个元素的指针吗?

从函数返回数组/指针

我正在尝试创建一个从字符串派生的新整数数组。 例如 : char x[] = “12334 23845 32084”; int y[] = { 12334, 23845, 32084 }; 我无法理解如何从函数中返回一个数组(我理解不可能)。 我最初尝试过: /* Convert string of integers into int array. */ int * splitString( char string[], int n ) { int newArray[n]; // CODE return ( newArray ); } int main( void ) { int x[n] = splitString( […]

如何将hex字符串转换为unsigned char数组?

例如,我有一个cstring “E8 48 D8 FF FF 8B 0D” (包括空格),需要将其转换为等效的无符号字符数组{0xE8,0x48,0xD8,0xFF,0xFF,0x8B,0x0D} 。 有效的方法是什么? 谢谢! 编辑:我不能使用标准库…所以考虑这是一个C问题。 对不起!

C99是否保证arrays是连续的?

在另一个问题的热门评论主题之后,我开始讨论C99标准中有关C数组的内容和内容。 基本上当我定义一个2D数组如int a[5][5] ,标准C99是否保证它将是一个连续的整数块,我可以将其转换为(int *)a并确保我将拥有一个有效的一维25个整数数组。 正如我理解标准的那样,上面的属性隐含在sizeof定义和指针算术中,但是其他人似乎不同意并且说要转换为(int *)上面的结构给出了一个未定义的行为(即使他们同意所有现有的实现实际分配连续的价值观)。 更具体地说,如果我们认为一种实现可以检测数组检查所有维度的数组边界并在访问1D数组时返回某种错误,或者不能正确访问第1行以上的元素。 这样的实施可以是标准的编译吗? 在这种情况下,C99标准的哪些部分是相关的。

为什么我不能创建一个大小由全局变量确定的数组?

为什么数组不能通过全局变量size初始化? #include int size = 5; int main() { int a[size] = {1, 2, 3, 4, 5}; printf(“%d”, a[0]); return 0; } 编译错误显示为 可能无法初始化可变大小的对象 据我说,数组应该按size初始化。 如果我坚持使用全局变量(如果可能的话),会有什么答案?

Malloc是C中的三维数组?

我正在将一些MATLAB代码翻译成C,我正在转换的脚本大量使用具有10 * 100 * 300复杂条目的3D数组。 数组的大小也取决于传感器的输入,理想情况下应该动态分配数组。 到目前为止,我已经尝试了两种方法,第一种方法是平面1Darrays value = array[x + (y*xSize) + (z*ySize*xSize)] 这伤害了我的大脑使用。 我还尝试了一个指针数组的数组 int main () { int ***array = malloc(3*sizeof(int**)); int i, j; for (i = 0; i < 3; i++) { *array[i] = malloc(3*sizeof(int*)); for (j = 0; j < 3; j++) { array[i][j] = malloc(3*sizeof(int)); } } array[1][2][1] = […]