Tag: arrays

Thrust – 如何使用我的数组/数据 – 模型

我是新手(cuda),我想做一些arrays操作,但我没有在互联网上找到任何类似的例子。 我有两个数组(2d): a = { {1, 2, 3}, {4} } b = { {5}, {6, 7} } 我想要推力计算这个数组: c = { {1, 2, 3, 5}, {1, 2, 3, 6, 7}, {1, 2, 3, 5}, {1, 2, 3, 6, 7} } 我知道它在c / c ++中是如何工作的,但不知道怎么说要做到这一点。 这是我的想法,它可能如何工作: 线程1:取一个[0] – >用b展开它。 写给c。 线程2:取一个[1] – >用b展开它。 写给c。 但我不知道该怎么做。 我可以将数组a和b写入1d数组,如: […]

循环中的C scanf在没有输入的情况下自动继续

我正在尝试在数组中输入,我希望输入如下。 5 (Number of the second dimensions in the array) 2 (Number of the first dimensions in the array) 所以我们在这个例子中得到了一个数组deeln [2] [5]。 我尝试使用以下代码获取它: #include #include #include bool isinarray(int val, int *arr, int size){ int countimp; for (countimp=0; countimp < size; countimp++) { if (arr[countimp] == val) return true; } return false; } int main(void){ int […]

C – 数组不能使用索引变量

我使用变量作为数组的索引时遇到问题。 代码基本上是这样的: int index; void main() { index = 1; doStuff(); } void doStuff() { char** myArray; myArray[0] = (char*)”Foo”; myArray[1] = (char*)”Bar”; print(“%s”, myArray[index]); } 如果我这样做: print(“%s”, myArray[1]); 它工作正常。 任何人都可以帮我吗? 它应该只是C代码,但如果它很重要,它用于Parallax芯片,而我正在使用Simple IDE。

使用延迟形状数组从C调用Fortran

是否可以从C / C ++调用Fortran子例程,其中一个Fortran参数是延迟形状数组? (希望我正确使用“延迟形状”一词。) 在下面的示例中, subr1()使用explicit-shape,并且工作正常,但subr2()使用deferred-shape并导致段错误。 这个问题表明需要一个显式接口来从另一个Fortran子例程调用subr2() ,但是我试图从C调用。这样做是不可能的吗? 在真正的问题中,数组的长度会更复杂 – 这就是为什么在理想的世界中,我想使用延迟形状的版本。 (当然,在一个理想的世界里,我根本不会混合使用Fortran和C.) test_array_c.c #include extern void subr1_(int*, int*); extern void subr2_(int*, int*); int main(int argc, char **argv){ int N,i; int *data; // create an array N=3; data=(int*)malloc(N*sizeof(int)); for (i=0;i<N;i++) data[i]=i; // pass array to fortran functions subr1_(&N,data); subr2_(&N,data); // free free(data); } test_array_f90.f90 subroutine […]

计算32位数组的奇数位置中有多少1个

我正在实现一个简单的汇编函数,该函数通过c中的程序调用,以计算32位数组奇数位置中有多少1个。 传递给函数的第一个参数是指向数组的指针,第二个参数是元素的数量。 我不明白它无限循环的作用。 //汇编代码 .globl ones_in_odds .type ones_in_odds,@function ones_in_odds: pushl %ebp movl %esp,%ebp movl 8(%ebp),%ecx movl 12(%ebp),%esi #xorl %edi,%edi xorl %eax,%eax subl $-1,%esi startloop: cmpl $0,%esi jl endloop movl (%ecx,%esi,4),%edx xorl %edi,%edi innerloop: cmpl $16,%edi jg startloop shrl %edx shrl %edx adcl $00,%eax incl %edi jmp innerloop decl %esi jmp startloop endloop: movl %ebp,%esp popl […]

将C数组中的字节转换为long

我有一个小端字节顺序的字节数组。 如何将其转换为长(四字节)数组? 用外行人的话说,我想合并每四个字节。

以不同类型访问数组成员的正确方法?

我有uint16_t 。 它的大部分成员都是uint16_t ,但有些是int16_t ,有些是uint8_t 。 你会怎么处理? 顺便说一句,我试过: 指针: 使用2个指针,一个int16_t*和另一个uint8_t* ,都初始化为数组的开头,以访问int16_t和uint8_t数组的成员。 (最初有效,但是我在程序后期遇到了一些问题,其他东西改变了指针的值,所以我不相信它。) 使用union进行类型定义。 在file.h中: typedef union { uint16_t u16[NO_OF_WORDS]; // As uint16_t int16_t s16[NO_OF_WORDS]; // As int16_t uint8_t u8[2 * NO_OF_WORDS]; // As uint8_t } ram_params_t; extern ram_params_t ram_params[]; 在file.c中: ram_params_t ram_params[] = {0}; (那真的很轰炸。) 铸件。 (我没有那么远。)

C:如何使数组的大小动态化?

我从书中读到:«C Primer Plus»告诉我C99标准,可以使用如下的语法: int b=4; char a[b]; 但是当我把这段代码放入vs2013时,它告诉我“表达式必须有一个常量值”。 这本书错了吗? 或者有一些我不知道的关于vs2013的新function?

计算给定字符集的所有组合,以进行powershell匹配?

在练习multithreading时,我曾希望简单地构建一个可以计算字符集的所有可能组合(即powershell破解/匹配)和在线程之间分配工作的应用程序,以真正地测量并亲自了解线程如何影响算法在不同系统上的时间。 到目前为止,计算这个算法对我来说是一个很大的挑战。 在最近的一个线程( 什么是一个有效的方法来添加multithreading到这个简单的算法? )我似乎得到了我需要做的事情(轻松传递每个字符范围的特定部分来分配工作)虽然算法根本不起作用,我不明白复杂性足以在我的应用程序中修复它。 以简单,迭代的方式,我如何计算给定字符集的每个组合,具有特定长度(即长度为5?) 在示例中: unsigned char range[] = “abcdefghijklmnopqrstuvwxyz0123456789”; brute_force(range, len); //character set, length of string to compute all combinations of //… 我非常感谢能够减轻一些关于找到这样做的正确概念的压力。

在运行时设置数组大小

我知道如何在函数内创建结构数组: typedef struct item { int test; }; void func (void) { int arraysize = 5; item ar[arraysize]; } 但是,当全局声明数组时,我该怎么做? typedef struct item { int test; }; item ar[]; void func (void) { int arraysize = 5; // What to here? }