opencl核函数怎么传二维数组实参

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencl核函数怎么传二维数组实参相关的知识,希望对你有一定的参考价值。

参考技术A 在c语言中可以用二维数组作为实参或者形参。
1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:voidf(intarray[3][10]);//正确voidf(intarray[][10]);//正确上面的两种二维数组形参表示都是正确的。
2、函数中用二维数组作为形参,不能把第2维或者更高维的大小省略,如下面的定义是不合法的:voidf(intarray[][]);//错误因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列,不能只指定一维而不指定第二维,下面写法是错误的:

c语言 指针传参

void add(struct friends_list friends[]);
这里的friends[]是什么意思?
是friends[0]么?
void add(struct friends_list friends[]);
这个函数传递的是friends[]数组中的哪个元素?

>>这里的friends[]是什么意思?
>>是friends[0]么?
这里的friends[]是表示函数的形参是一个数组,在调用该函数时,传递的实参必须是一个数组名(比如,有int a[10]; 在传递的时候就传a),或者是数组首元素的地址(&a[0])。

>>void add(struct friends_list friends[]);
>>这个函数传递的是friends[]数组中的哪个元素?
不是传递的数组哪个元素,而是传递的数组首地址,friends[]相当于*friends。然后可以根据指针地址的加减操作,访问其他元素的地址,以及地址对应的值。

请参考你前一个问题的回答。
参考技术A friends[]是个数组
friends[0]是这个数组的第一个元素。
参考技术B 等同于 &friends[0] 参考技术C struct friend_list
定义有一个friend_list的结构体。
struct friends_list friends[]
是定义一个结构体的数组是friends[]
假设:friends[i]就是这个结构体数组的第i个结构体元素
结构数组的定义方法和结构变量相似,只需说明它为数组类型即可。例如: struct stu int num; char *name; char sex; float score; boy[5]; 定义了一个结构数组boy[],共有5个元素,boy[0]~boy[4]。每个数组元素都具有struct stu的结构形式。每个结构形式里面又有三个数据,例如boy[1]里有num,name,sex三个数据。

以上是关于opencl核函数怎么传二维数组实参的主要内容,如果未能解决你的问题,请参考以下文章

C语言:二维数组 形参传值写法

C语言函数传递二维数组

指针的这些知识你知道吗?C语言超硬核指针进阶版3w+字详解+指针笔试题画图+文字详细讲解

二维数组做地图是怎么实现的

将二维数组名作为函数实参

c语言中怎么用二维数组作为函数参数