Interview answers verified by specialists.

Find interview questions and answers on this website:


See right interview answers on 30 common job interview questions

Can you assign a different address to an array tag?

No, although in one common special case, it looks as if you can.
An array tag is not something you can put on the left side of an assignment operator. (It's not an "lvalue,"
let alone a "modifiable lvalue.") An array is an object; the array tag is a pointer to the first element in that
object.

For an external or static array, the array tag is a constant value known at link time. You can no more change
the value of such an array tag than you can change the value of 7.

Assigning to an array tag would be missing the point. An array tag is not a pointer. A pointer says, "Here's
one element; there might be others before or after it." An array tag says, "Here's the first element of an array;
there's nothing before it, and you should use an index to find anything after it." If you want a pointer, use
a pointer.

In one special case, it looks as if you can change an array tag:

void  f( char a[ 12 ] )
{
        ++a;    /* legal! */
}

The trick here is that array parameters aren't really arrays. They're really pointers. The preceding example
is equivalent to this:

void  f( char *a )
{
        ++a;    /* certainly legal */
}

You can write this function so that the array tag can't be modified. Oddly enough, you need to use pointer
syntax:

void  f( char * const a )
{
        ++a;    /* illegal */
}

Here, the parameter is an lvalue, but the const keyword means it's not modifiable.

Do you know that?

32.5% freelancers earn as more as they were full time employee in the same industry Next

Articles:

Popular:

Fast Payments
Payoneer sing up to get free 
$25