char* und char[]



  • hey kann mir jemand sagen wo der unterschied liegt?

    ich dachte der compiler würde beim kompilieren sowieso alle '[]' in '*' umwandeln.

    wieso funktioniert dann das beispiel nicht mit '*'

    #include <iostream>
    #include <string>
    #include "rapidxml.hpp"
    
    using namespace std;
    using namespace rapidxml;
    
    int main ( )
    {
    	char x[] = "<Something>Text</Something>\0" ; //<<<< funktioniert, aber mit '*' nicht
    	xml_document<> doc ;
    	doc.parse<0>(x) ;
    	cout << "Name of my first node is: " << doc.first_node()->name() << endl ;
    	xml_node<>* node = doc.first_node("Something") ;
    	cout << "Node 'Something' has value: " << node->value() << endl ;
    }
    

    Wenn ich es so schreibe 'char* x' kommt eine Warnung:

    warning: deprecated conversion from string constant to ‘char*’

    wäre dankbar für eine erklärung 😞
    danke!



  • 1. Ist das nur eine Warning. Kein Fehler.

    2. Nein ein Zeiger und Array sind nicht das gleiche.

    3. Wenn überhaupt wäre der korrekte Typ const char* und der sollte auch ohne warning gehen.


Anmelden zum Antworten