to my understanding of restrict keyword the following code should print something different for the 2 cases, but it prints the same.
Am I doing something wrong?
Code:
void f1(int *x, int *y, size_t n)
{
for (int i = 0; i < n; i++)
{
x[i] *= *y;
printf("%d ", x[i]);
}
puts("");
}
void f2(int *restrict x, int *restrict y, size_t n)
{
for (int i = 0; i < n; i++)
{
x[i] *= *y;
printf("%d ", x[i]);
}
puts("");
}
int main( int argc, char *argv[] )
{
int arr [10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int arr2[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
srand(12);
int index = (rand() % ARRSIZE(arr));
int *p1 = arr + index;
int *p2 = arr2 + index;
printf("index=%d\n\n", index);
f1(arr, p1, ARRSIZE(arr));
f2(arr2, p2, ARRSIZE(arr2));
return ( 0 ) ;
}