I have a silly doubt . Say suppose I have a array int a[]={3,4,5,6} now I want to know if the address of this array points to the location of only 3 or the entire array elements?
            Asked
            
        
        
            Active
            
        
            Viewed 88 times
        
    0
            
            
        - 
                    An array is an array. However `a` can decay to a pointer to the first element of the array in certain contexts – UnholySheep Aug 08 '22 at 13:32
- 
                    2The address of `a` will point to the first element of `a` (`a[0]`). – mdf Aug 08 '22 at 13:32
- 
                    6The address of an array points to the array. It just so happens that that location is also the address of the first element of the array. – NathanOliver Aug 08 '22 at 13:33
- 
                    1A pointer to the first element of an array, only points to the first element of the array. However by incrementing that pointer you get a pointer to the second element of the array, and so on. So essentially you are correct. – john Aug 08 '22 at 13:34
- 
                    2@mdf -- it's more subtle than that. The address of the array is the address of the array. It doesn't point at anything, because it's not a pointer. The **name** of the array decays into a pointer to its first element in most contexts. So `int *p = a;` sets `p` to point at the first element of the array. – Pete Becker Aug 08 '22 at 14:08
1 Answers
1
            
            
        The address of the array points to the array. And that is the same address as the address of the first element.
However, they are not the same type. &a is a pointer to an array with 4 elements, int(*)[4]. &a[0] is a pointer to a single int, an int*. Because arrays can decay to pointers to their first element (for example when passed to a function) those two are often confused.
 
    
    
        463035818_is_not_an_ai
        
- 109,796
- 11
- 89
- 185
