Why Array Index starts from Zero
Answers were Sorted based on User's Feedback
Answer / pooja sonawane
the index of array, which is of the form a[i], is converted
by the compiler in the form [a+i]. So, the index of first
element is zero because [a+0] will give 'a' & the first
array element can be accessed. Due to this, we can also
access the array elements as'i[a]' instead of 'a[i]' , &
this will not produce an error.
Is This Answer Correct ? | 183 Yes | 48 No |
Answer / chandan singh from niit
This boils down to the concept of Binary digits. Take an
array size of 64 for example. We start from 0 and end at
63. We require 6 bits.But, if we were to start from 1 and
end at 64, we would require 7 bits to store the same
number, thus increasing the storage size.
Is This Answer Correct ? | 111 Yes | 77 No |
Answer / rck
The complier treats a[0] as *(a+0) ie *(a+0) (array name is
the base address of that array)gives the first element of
the array.
If the array starts from 1 a[1] is treated as *(a+1) gives
the second element of array.The first element is missing.so
array always starts from 0.
Is This Answer Correct ? | 35 Yes | 14 No |
Answer / ashish verma
The index of array, which is of the form a[i], is converted
by the compiler in the form [a+i]. So, the index of first
element is zero because [a+0] will give 'a' & the first
array element can be accessed. Due to this, we can also
access the array elements as'i[a]' instead of 'a[i]' , &
this will not produce an error.
Is This Answer Correct ? | 18 Yes | 13 No |
Answer / ranga raj.b
Array is a chunk of continues memory allocation. The arthmetic that is used by compiler to move to the next array location is StartAddress + (Index)*sizeof(int)if it is an integer array.now if we see to access the first location of the array we have to give Index =0 and for next location index =1 and so on...This is why array index start with zero.
Is This Answer Correct ? | 6 Yes | 1 No |
Answer / chetan
Both Answer ARE correct but First one is EXACT and after
that compiler is design according to that
Is This Answer Correct ? | 24 Yes | 20 No |
Answer / ashlesha
Second answer is correct. but its compiler specific to start an array index with 1 or zero.as in pascal the array index starts with '1'.
Is This Answer Correct ? | 5 Yes | 3 No |
Answer / vikas chand
yes first ans is exactly correct.
second one is wrong because in java, c# etc array index is
start with zero..
but in that case we can not write a[i] as i[a]...
because a is reference variable...
so i think first ans is exactly right......
Is This Answer Correct ? | 4 Yes | 2 No |
Answer / sabab ali khan
becouse the value of given index are multiplied by size of
datatype of array and then add in the base Address to find
address of that block which you want to access
ex.
int arr[5];
if the base address of array is 1001 then last block
address will be 1009
and if we give arr[2] then compiler calculate address like
this..
1001 + sizeof(int)* 2 = 1005
where base address = 1001
and 2 is the given index.
so the calculated address is 1005 and third block will be
access.
Is This Answer Correct ? | 7 Yes | 5 No |
Will there be any difference in the image buffer size if it is loaded in from CString to LPTSTR using GetBuffer()? lptstr = string.GetBuffer(0);
Does the application have more than one object? If no, then what is the reason?
What is LPCTSTR? What does LP denote it?
what is message loop how mfc does it internally?
how does the UIThread and worker thread communicates and handle events
Tell us something about MFC?
What is LoadLibrary function returns?
1)why we cant create more than one instance of the class Derived from CWinApp
How to create a Modeless Dialog?
In SDI how many view's are attached to document object and in MDI how many view's are attached to Document object?
Explain in sort What is CTargetObject?
Whats is DDX & DDV in MFC?