Answers/Solutions to Exercises in Chapter 6, Exercise 5
E5: What will be the output of the following program?
int main()
{
int i, a[3] = {0,1,2};
doit(a,&a[1]);
for(i = 0; i < 3; i++)
printf("a[%d]=%d\n",i,a[i]);
return 0;
}
void doit(int *a, int* b)
{
a[0] = b[0];
a[1] = b[1];
}
A5: The actual output is below. The explanation: we start with array a with values 0, 1, 2. doit() is passed two pointers, the first points to a[0] (that contains 0) and the second points to a[1] (that contains 1). Thus the local a is like the global a, while the local b is the global a starting from the second item. Thus a[0] is set to a[1] (hence to 1), and a[1] is set to a[2] (hence to 2), and a[3] remains as it was (hence 2).
a[0]=1 a[1]=2 a[2]=2
Back to Answers/Solutions Index Back to Answers/Solutions for Chapter 6 Index