указатель на символ и указатель на символ - PullRequest
0 голосов
/ 17 сентября 2010

Есть ли разница между массивом указателей на символы и указателем на указатель на символ?

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

http://c -faq.com / aryptr / aryptr2.html

Это не одно и то же, поскольку сравнивает массив char с указателем на char, но принцип таков:то же самое - просто замените буквы на иллюстрации указателями.

0 голосов
/ 17 сентября 2010

Да, существуют различия между массивом вещей и указателем на вещь, но они обычно исчезают при определенных обстоятельствах.

Когда вы передаете массив функции (например), которая ухудшается до указателя на первый элемент в этом массиве.

Пример:

#include <stdio.h>

static void func (char arr[], char *parr) {
    printf ("in func: %3d %3d\n", sizeof(arr), sizeof (parr));
}
int main (void) {
    char arr[100], *parr = arr;
    printf ("         arr ptr\n");
    printf ("         --- ---\n");
    printf ("in main: %3d %3d\n", sizeof(arr), sizeof (parr));
    func (arr, parr);
    return 0;
}

Это выводит:

         arr ptr
         --- ---
in main: 100   4
in func:   4   4

Это обычно раздражает людей без конца, поскольку вы не можете получить размер «массива», переданного функции (вы получаете только размер того, что было передано, что является указателем). Если вам нужен фактический размер, вы должны также указать его:

int array[100];
doSomethingWith (array, sizeof (array));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...