В Swift, как мне преобразовать CFStringRef [] и CFTypeRef [] в CMutablePointer ?

Причина, по которой my_array и &my_array приводит к тому же адресу, может быть легко понята, когда вы смотрите на макет памяти массива.

Допустим, у вас есть массив из 10 символов ( вместо этого 100 в вашем коде).

char my_array[10];

Память для my_array выглядит примерно так:

+---+---+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+---+---+
^
|
Address of my_array.

В C / C ++ массив распадается на указатель на первый элемент в выражении, таком как

printf("my_array = %p\n", my_array);

. Если вы посмотрите, где находится первый элемент массива, вы увидите, что его адрес совпадает с адресом массива:

my_array[0]
|
v
+---+---+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+---+---+
^
|
Address of my_array[0].
7
задан ztan 15 April 2015 в 20:41
поделиться