Where is the array variable stored in C?

#include <stdio.h>

int main(){
    int array[] = {1,2,3};
    printf("L00: array[0]=%d \n",array[0]);
    printf("L01: array[1]=%d \n",array[1]);
    printf("L02: array[2]=%d \n",array[2]);
    printf("L03: &array[0]=%p \n",&array[0]);
    printf("L04: &array[1]=%p \n",&array[1]);
    printf("L05: &array[2]=%p \n",&array[2]);
    printf("L06: array=%p \n",array);
    printf("L07: &array=%p \n",&array);
    return 0;
}

In this program, L03, L06, and L07 show ( &array, arrayand, &array[0]respectively) the same memory address.

So, I wonder where the "array" is located as a variable in RAM.

If there is no "array" in RAM, where is it?

+4
source share
4 answers

C11 RAM, IIRC ( , n1570). , process a ( , ).

(, ) .

, , ( ).

+8

, , , :

+----------+----------+----------+
| array[0] | array[1] | array[2] |
+----------+----------+----------+
^          ^          ^          ^
|          |          |          |
array      |          |          |
|          |          |          |
array + 0  array + 1  array + 2  |
|          |          |          |
&array[0]  &array[1]  &array[2]  |
|                                |
&array                           |
|                                |
&array + 0                       &array + 1

"", ( , array - &array[0], array + 0 array).

:

  • &array int (*)[3]
  • &array + 0 &array
  • &array[0] int *
  • array &array[0]
  • array + 0 array

, , , . , (&array)[0] &array + 0, &array.

- , p index i p[i] *(p + i).


, , - array &array. , , , .

+7

C , , , " " . .

, :

  • array, , , . 100% &array[0].
  • &array - - . , , , .
+5

(& , & [0]) .

, .

  • &array int (*) [3].
  • array int [3] ( )
  • &array[0] int *.

, &array[0] n-1 , n - .

"", ?

"" , . - , . , , , .

, , .. , ( ), static, , .bss. ( , ), . , .

+4
source

Source: https://habr.com/ru/post/1679411/


All Articles