Tag: 数组

关于typedef中单实例数组的一些问题

我正在使用GNU Multi-Precision(GMP)库代码使用任意长度的整数来阅读一些代码。 MP整数的类型是mpz_t如gmp.h头文件中所定义。 但是,我对这个库定义的mpz_t类型的低级定义有一些疑问。 在标题代码中: /* THIS IS FROM THE GNU MP LIBRARY gmp.h HEADER FILE */ typedef struct { /* SOME OTHER STUFF HERE */ } __mpz_struct; typedef __mpz_struct mpz_t[1]; 第一个问题: [1]是否与__mpz_struct相关联? 换句话说, typedef是将mpz_t类型定义为__mpz_struct数组,只出现一次? 第二个问题:为什么arrays? (为什么只出现一次?)这是我听说过的结构黑客之一吗? 第三个问题(可能与第二个问题间接相关): mpz_init_set(mpz_t, unsigned long int)函数的GMP文档说只使用它作为pass-by-value,尽管可以假设这个函数会修改其内容被调用的函数(因此需要pass-by-reference)语法。 参考我的代码: /* FROM MY CODE */ mpz_t fact_val; /* declaration */ mpz_init_set_ui(fact_val, 1); […]

如何将MAC地址(在数组中)转换为C中的字符串?

如何将int数组中的MAC地址转换为C中的字符串? 例如,我使用以下数组来存储MAC地址: int array[6] = {0x00, 0x0d, 0x3f, 0xcd, 0x02, 0x5f}; 如何将其转换为字符串,如”00:0d:3f:cd:02:5f” ?

C中的char *和char 之间的区别

可能重复: C – “char var []”和“char * var”之间的区别? 我写了以下C代码 #include int main() { char name[31]; char *temp; int i ; scanf(“%s”,name); temp = name; name = temp; } 编译时出现以下错误 incompatible types when assigning to type ‘char[31]’ from type ‘char *’ 数组名称是指向第一个元素的指针(这里是char指针..right?)。 对吗?上面的代码意味着字符数组和char *是不同的类型。这是真的吗? 为什么要输入名称!= char *为什么我不能为char指针指定另一个char指针(数组名称)

使用JNI将C数组复制到Java数组中

我在C中有一个无符号整数数组和一个long数组java数组。 我想将无符号整数的内容复制到java数组中。 到目前为止,我发现执行此操作的唯一函数是SetLongArrayRegion(),但这需要一个完整的缓冲区数组。 是否有一个函数只设置java数组的各个元素?

使用ctypes传递数组

我有一个C函数 void read_FIFO_AI0(int16_t** input, size_t size, NiFpga_Session* session, NiFpga_Status* status) { *input = (int16_t*) malloc (size*sizeof(int16_t)); // function that populates the array *input } 填充数组“* input”。 现在我想将该数组中的数据传递给python进行进一步处理。 我尝试使用ctypes来做到这一点: def read_FIFO_AI0(size,session,status): _libfpga.read_FIFO_AI0.argtypes = [POINTER(ARRAY(c_int16, size)), c_int, POINTER(c_uint32), POINTER(c_int32)] _libfpga.read_FIFO_AI0.restype = None values = (c_int16*size)() _libfpga.read_FIFO_AI0(byref(values),size,byref(session),byref(status)) return values 代码执行但我在数组中得到错误的结果。 当我尝试在CI中使用C函数时获得正确的结果: size_t size=20; int16_t* input; read_FIFO_AI0(&input, size, &session, […]

在C中创建一个int数组?

让我们说我有以下方法原型: void mix_audio(int *vocal_data_array, int *instrumental_data_array, int *mixed_audio_array, FOURTH ARGUMENT) { } 我怎么样: 在上面的参数之前初始化一个array_of_arrays,以便将它作为第四个参数传递? 在该方法中,使其成为我的array_of_arrays的第一个值是名为vocal_data的数组,我的数组的第二个值是instrumental_data_array,第三个值是mixed_audio_array。 之后我将如何循环遍历array_of_arrays中第一个数组的所有值。 我希望我在这里不要求太多。 我只是觉得有人可以很快吐出来的语法很简单:) 谢谢! 编辑1 请注意,虽然我已经通过我的示例展示了一个长度为3的array_of_arrays,但实际上我正在寻找可以包含可变长度数组的东西。

C函数参数中的数组语法与指针语法

我理解数组如何衰减到指针。 我明白,对于编译器,这个: void foo(int *arg1); 是100%相当于: void foo(int arg1[]); 一种风格应该优先于另一种吗? 我希望保持一致,但我很难为两种决定辩护。 虽然int main(int argc, char *argv[])和int main(int argc, char **argv)是相同的,但前者似乎更常见(如果我错了,请纠正我)。

字符串指针数组

在C编程中,我们无法使用scanf()函数获取值到指针数组 int main() { char *names[6]; int loop; scanf(“%s”,names[1]); printftf(“\n%s”,names[1]); } 它正在工作,当我把输入作为程序,我认为它是存储输入,但它正确打印输出作为给定的输入。之后,它给出了分段错误…但是当我在循环中做同样的得到6个字符 int main() { char *names[6]; int loop; for(loop=0;loop<6;loop++) scanf("%s",names[1]); for(loop=0;loop<6;loop++) printf("\n%s",names[1]); } 它不工作请给我答案……

C中的静态和动态数组有什么区别?

可能重复: 数组名是C中的指针吗? C ++静态数组与动态数组? 我正在学习C而且我对以下两个数组之间的区别感到困惑: int a[10]; 和 int *b = (int *) malloc(10 * sizeof(int)); 就最基本的水平而言,这两者有什么区别?

C:结构或数组的速度更快?

我想实现(抽象地表示)二维4×4矩阵。 我为矩阵乘法等编写的所有代码都将完全“展开” – 也就是说,我不会使用循环来访问和写入矩阵中的数据条目。 我的问题是:在C中,使用结构本身会更快: typedef struct { double e0, e1, e2, e3, e4, …, e15 } My4x4Matrix; 或者这会更快: typedef double My4x4Matrix[16]; 鉴于我将单独访问每个矩阵元素: My4x4Matrix a,b,c; // (Some initialization of a and b.) … c.e0=a.e0+b.e0; c.e1=a.e1+b.e1; … 要么 My4x4Matrix a,b,c; // (Some initialization of a and b.) … c[0]=a[0]+b[0]; c[1]=a[1]+b[1]; … 或者它们的速度完全相同?