In C name of the array indicates the base address of the array, so all of your ring1, ring2 and ring3 gives the address of their starting element (i.e 0th).
Similarly rings is also an array (Its a 2 Dimensional array).
We cannot store address in arrays, for that will have to use pointers.
So we have to use below way.
#include <stdio.h>
int main()
{
int ring1[5] = {1,2,3,4,5};
int ring2[5] = {6,7,8,9,10};
int ring3[5] = {11,12,13,14,15};
//int rings[3][5] = {{ring1}, {ring2}, {ring3}};
int *rings[3] = {ring1, ring2, ring3};
printf("ring1 = %p and rings[0] =%p\n", ring1, rings[0]);
printf("ring2 = %p and rings[1] =%p\n", ring1, rings[1]);
printf("ring3 = %p and rings[2] =%p\n", ring1, rings[2]);
return 0;
}
memcpyor element by element in a loop. You could makeringsinto an array of pointers, e.g.int *rings[3] = {ring1, ring2, ring3};but note that any changes toring1[i]will also changerings[0][i]and vice versa. Likewise forring2andring3.C++compiler?