Проблема с функцией C типа char указатель, кто-то может объяснить? - PullRequest
4 голосов
/ 07 апреля 2010

Может кто-нибудь помочь мне найти ошибки в этой функции C?

    char* f(int i) {
            int i; 
            char buffer[20];
            switch ( i ) {
                    1: strcpy( buffer, "string1");
                    2: strcpy( buffer, "string2");
                    3: strcpy( buffer, "string3");
                    default: 
                    strcpy(buffer, "defaultstring");
            }
            return buffer;
    }

Я думаю, что это связано с преобразованием типов. Мой компилятор выдает предупреждение, что «объявление int i затеняет параметр».

Ответы [ 11 ]

1 голос
/ 07 апреля 2010

У вас есть параметр i, и вы объявляете локальную переменную i.

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

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