MCQs
Both mean two different things. arr gives the address of the first int, whereas the &arr gives
the address of array of ints.
No, both the statements are same. It is the prototype for the function fun() that accepts
one integer array as an parameter and returns an integer value.
No, Mentioning the array name in C or C++ gives the base address in all contexts except one.
Syntactically, the compiler treats the array name as a pointer to the first element. You can
reference elements using array syntax, a[n], or using pointer syntax, *(a+n), and you can
even mix the usages within an expression.
When you pass an array name as a function argument, you are passing the "value of the
pointer", which means that you are implicitly passing the array by reference, even though
all parameters in functions are "call by value".
Yes, It is possible to allocate a block of memory (of arbitrary size) at run-time, using
the standard library's malloc function, and treat it as an array.
Which of the following statements are correct about an array?
1:The array int num[26]; can store 26 elements.
2:The expression num[1] designates the very first element in the array.
3:It is necessary to initialize the array at the time of declaration.
4:The declaration num[SIZE] is allowed if SIZE is a macro.
1. The array int num[26]; can store 26 elements. This statement is true.
2. The expression num[1] designates the very first element in the array. This statement is
false, because it designates the second element of the array.
3. It is necessary to initialize the array at the time of declaration. This statement is false.
4. The declaration num[SIZE] is allowed if SIZE is a macro. This statement is true, because
the MACRO just replaces the symbol SIZE with given value.
Hence the statements '1' and '4' are correct statements.
The statement 'B' is correct, because int num[6]; specifies the size of array and num[6]=21;
designates the particular element(7th element) of the array.
The statement int arr[size]; produces an error, because we cannot initialize the
size of array dynamically. Constant expression is required here.
Example: int arr[10];
One more point is there, that is, usually declaration is not allowed after calling
any function in a current block of code. In the given program the declaration
int arr[10]; is placed after a function call scanf().
Answer: (A)
void fun(int p[][4]){ } is the correct way to write the function fun(). while the others are considered only the function fun() is called by using call by reference.
Step 1: int arr[]={2, 3, 4, 1, 6}; The variable arr is declared as an integer array and initialized.
Step 2: printf("%u, %u, %un", arr, &arr[0], &arr); Here,
The base address of the array is 1200.
=> arr, &arr is pointing to the base address of the array arr.
=> &arr[0] is pointing to the address of the first element array arr. (ie. base address)
Hence the output of the program is 1200, 1200, 1200
Which of the following statements mentioning the name of the array begins DOES NOT yield
the base address?
1: When array name is used with the sizeof operator.
2: When array name is operand of the & operator.
3: When array name is passed to scanf() function.
4: When array name is passed to printf() function.
The statement 1 and 2 does not yield the base address of the array. While the scanf()
and printf() yields the base address of the array.