When an array is passed as parameter to a function, which of the following statements is correct ?
The function can change values in the original array.
In C, when an array name is used as an argument it decays to a pointer to its first element; the array itself is not copied.
The parameter (written as int a[] or int *a) therefore holds the address of the caller's array, so a[i] inside the function refers to the very same memory locations.
Any assignment such as a[0] = 5 inside the function changes the original array. The pointer value is passed by value, but the elements are reached through it, so claiming the original values cannot change is wrong.
Accessing the elements is perfectly legal, so there is neither a compilation error nor a run-time error (as long as indices stay within bounds).
Hence, the answer is The function can change values in the original array..
A three dimensional array in ‘C’ is declared as int A[x][y][z]. Here, the address of an item at the location A[p][q][r] can be computed as follows (where w is the word length of an integer) :
When we pass an array as an argument to a function, what actually gets passed ?
Given
int arr[3][4][2]= {{{2,4},{7,8},{3,4},{5,6}},{{7,6},{3,4},{5,3},{2,3}},{{8.9},{7,2},{3,4},{5,1}}};
Which one of the following can be used to refer to element 1 in the above 3-d array?
Which of the following is true for computation time in insertion, deletion and finding maximum and minimum element in a sorted array ?
Consider an array A[20, 10], assume 4 words per memory cell and the base address of array A is 100. What is the address of A[11, 5] ? Assume row major storage.
Consider the following C program segment.
#include <stdio.h>
int main()
{
char s1[7] = "1234";
char *p;
p = s1 + 2;
*p = '0';
printf("%s", s1);
return 0;
}
#include <stdio.h>
void foo(int *p, int x){
*p = x;
}
int main(){
int *z;
int a = 20, b = 25;
z = &a;
foo(z, b);
printf("%d", a);
return 0;
}
What is the output the given C language code snippet?
#include<stdio.h>
int main()
{
int x[] = {10,20,30};
int *p = x;
p++;
printf("%d",*p);
return 0;
}
Which of the following expression will delete the entire array pointed to by q?