Actually, if A creates #temp.....then B can't create #temp because it already exists. It *can* and often does use #temp contents - this is a common trick in writing procs - create/populate the #temp in an outer proc and call an inner proc that then reads it.....subverts not being able to pass arrays as params.
Soo...if A creates #temp, B can see it ...and if B calls C, C can see it as well.
If A creates #temp and calls B and B tries to create #temp - you get an error