关于子程序参数传值问题

我在看N-body的时候,发现在调用一些子程序的时候并没有利用指针进行传值啊??
如:

extern __shared__ float4[] shPosition;
------这里会给shPosition赋值,但是并不使用----
acc = tile_calculation(myPosition, acc);
tile_calculation(float4 myPosition, float3 accel)
{
extern __shared__ float4[] shPosition;  
//再次申明shPosition,再作为传入参数
accel = bodyBodyInteraction(myPosition, shPosition[i++], accel);
}
bodyBodyInteraction(float4 bi, float4 bj, float3 ai)
{
---------
return ai;
}

喔,这里面设置了一个return,是不是就不需要了啊??

  1. 现在我在编的程序和这个与区别,就是在子程序中还有一些(不止一个)中间变量会在以后的程序中用到,这些变量应该怎么定义啊??

2.这里再加一问就是共享存储器在子程序中使用时需要再次申明吗?这时里面的值会改变不?作为参数传递时,为了能改变里面的值是否需要利用指针??程序中似乎没有

[ 本帖最后由 hnuzhoulin 于 2010-3-16 10:10 编辑 ]

1.可以按照传地址的方式传递,这里跟C和C++类似就可以;
2.nbody这个用法就是shared memory的指针