2015-01-10 3 views
-7
#include <iostream> 

int main() 
{ 
    char[] name = { "Nitish prajapati" }; 
    char* namePointer = &name ; 

    std::cout << "\n name = " << name; 
    std::cout << "\n &name = " << &name; 
    std::cout << "\n &namePointer = " << &namePointer; 
    std::cout << "\n namePointer = " << namePointer; 

    return 0; 
} 

Почему эта программа дает ошибку: expected unqualified-id before '[' token? и объяснить, как вы на самом деле использовать символ наряду со ссылкой и разыменования (т.е. указатель)C++ char получает ошибки?

+0

'имя символ [] '! не 'char [] name' – Emadpres

+0

char [] name ?? это не C++ – Ankur

+0

Хорошо круто !! Я чувствую себя глупо сейчас :) Спасибо всем –

ответ

3

Эти оба утверждения неверны

char[] name = { "Nitish prajapati" }; 
char* namePointer = &name ; 

В C++ уважительной декларации массив выглядит как

char name[] = { "Nitish prajapati" }; 

Что касается второго оператора, то нет никакого неявного преобразования из типа char (*)[17] в char *. Инициализатором декларации имеет тип char (*)[17] пока объявлен указатель имеет тип char *

Вы должны написать либо

char* namePointer = name ; 

или

char (*namePointer)[17] = &name ; 
0

Оно должно быть:

const char name[] = {"Nitish prajapati"}; 
const char* namePointer = name ; 
+0

Не обязательно быть 'const' (и если бы это было так, указатель тоже нуждался бы в изменении). –

+0

Нет никакой причины, чтобы массив был 'const'. –

Смежные вопросы