Я новичок в C с хорошим фоном в java, и я пытаюсь понять указатели и массивы.
Я знаю, что индекс operator[]
является частью определения массива, поэтому:
int numbers[] = {1,3,4,5};
создаст целочисленный массив, который будет представлен в памяти как 16 байт, 4 лота 4 байта:
numbers[0] = 1, address 0061FF1C
numbers[1] = 3, address 0061FF20
numbers[2] = 4, address 0061FF24
numbers[3] = 5, address 0061FF28
Однако, когда дело доходит до указателей, мои знания начинают разрушаться, поэтому, если бы я должен был создать указатель на номера массивов, я бы сделал следующее:
int *pNumbers = &numbers[0];
который будет выглядеть примерно так:
И я предполагаю, что это будет размером 4 байта?
Однако **
я читаю как "указатель на указатель", который не имеет для меня никакого смысла, зачем кому-то нужен указатель на указатель, конечно, если a- > b- > c, тогда a- > c будет достаточно? Я знаю, что у меня что-то не хватает, и оно должно иметь какое-то отношение к массивам, поскольку argv
может иметь тип char[ ]
или char **
, как показано ниже:
int main(int argc, char **argv){}
Итак:
- что это (
**
)? - какое использование у него есть?
- как он представлен в памяти?