Regarding the kernel function

In my kernel function i have given arguments as three vectors A,B and C respectively.
A and B are input vector ; C is the output vector
kernel function is as follows
{
int i=get_global_id(0);
int j;
for(j=0;j<6;j++)
{
B[j]=B[j]+1;
}
}

there was no change in the B vector

but when i wrote C[j] in place of B[j] inside the for loop, i got the changes in C vector
C[j]=C[j]+1;
Can anyone explain why??

how do you define your buffer B and C? is buffer B defined as read only and C as write only? or is B defined as

__global const float* B

i have written a kernel for union function between 2 vectors

kernel(a,b,c,k)
{
int i=get_global_id(0);
int j;
int v;
v=0;
for(j=0;j<k;j++)
{
if(A[i] == B[j])
{
v=1;
}
}
if(v==0)
C[i]=A[i];
}
before the kernel function i initialized the values of vector C with 99999
and i have two vectors A and B which have some common values =, but still the values of vector C remain the same.
Can you tell why??

how are a,b and c defined?

__kernel foo(__global const a, __global const b, __global const c, int k)

or

__kernel foo(__global const a, __global const b, __global c, int k)

and is c defined as a read/write buffer on host side??

Now the code is running; it was not accessing the GPU through a virtual instance therefore i ran the code on the machine where the Gpu card was installed, now it is running correctly