What does *array[] means?
arrays, c
Solution
`*array[]` means array of pointers, in your example:
char *somarray[] = {"Hello"};
`somarray[]` is array of `char*`. this array size is one and contains address to on string `"Hello"` like:
somarray[0] -----> "Hello"
`somarray` means address of first element in array.
`&somarray` means array address
`*somarray` means value of first element
Suppose address of `"Hello"` string is for example 201, and array `somaaray` at `423` address, then it looks like:
+----+----+----+---+---+----+----+----+---+----+
| `H`| 'e'|'l'|'l'|'o'| '\0'|
+----+----+----+---+---+----+----+----+---+---+----+
201 202 203 204 205 206 207 208 209 210 2
^
|
+----+----+
| 201 |
+----+----+
423
somarray
and:
`somarray` gives `423`
`&somarray` gives `423`
`*somarray` gives `201`
Point to be notice `somarray` and `&somarray` gives same value but semantically both are different. One is address of first element other is address of array. read this answer.
Problem
In c, if i declare something like: ``` char *somarray[] = {"Hello"}; ``` What does it mean ? If i print it: `somarray` -> gives me a memory address in the stack `&somarray` -> same thing, stack memory address, but.. `*somarray` -> gives me a memory address in the constants I can actually use `*somarray` to print the string. What is going on?