Тип параметра, принимаемого strcpy ()? - PullRequest
0 голосов
/ 30 июля 2011

Почему этот strcpy() принимает указатель на массив символов, хотя определение strcpy равно char * strcpy( char * , const char * ) ??

#include <stdio.h>
#include <string.h>

main()
{
    char str[] = "Have A Nice Day";
    char ptr[17];

    strcpy(ptr, str);
    printf("%s", ptr);

}

Ответы [ 3 ]

4 голосов
/ 30 июля 2011

Массив не является указателем (хотя они похожи по поведению и использованию), но он прозрачно распадается на единицу в контексте, где требуется указатель (как в случае, когда он передается в качестве параметра функции, которая ожидает указатель).

Более подробное описание можно найти в C FAQ 6.3 .

0 голосов
/ 30 июля 2011

В C / C ++ массивы также являются указателями. http://www.cplusplus.com/forum/articles/9/ Подробнее см. Здесь.

0 голосов
/ 30 июля 2011

Char [n] дает адрес, который можно использовать вместо константного указателя с памятью, выделенной во время объявления.

...