2013-09-08 3 views
-2

У меня проблема со следующим кодом.C++ char * не может использоваться как указатель

int main(){ 
    char* cptr = new char[100]; 
    *cptr[1] = 'A'; 
} 

Это дает мне ошибку, когда я скомпилировать его в Visual C++ 2010: "Операнд '*' должен быть указателем". Но cptr - указатель.

+2

'cptr [1]' - это элемент массива, а не указатель на элемент. Итак, вы можете сказать просто 'cptr [1] = 'A';' –

ответ

6

Да, но cptr[1] не является - это char. Это то, к чему вы применяете *.

*cptr[1] == 
* (cptr[1]) 
     | 
this is a char 

Вы могли бы просто написать

char cptr[] = "A"; 

или использовать std::string.

+0

Примечание: он получал бы тот же результат при выполнении * (cptr + 1) = 'A'; – SinisterMJ

+0

Неправильное использование. Выражение 'cptr [1]' имеет тип ** reference ** для символа 'char'. – IInspectable

+0

Не могли бы вы переписать код на стандартный C? –

0
int main(){ 
     char* cptr = new char[100]; 
     cptr[1] = 'A'; 
    } 

Это правильный способ его реализации.