Warum soll ich ein zu einem char * und nicht zu einem * umwandeln?
für die Leser, die Frage zu klären, sind Sie nicht soll dies verwenden, um Code wie überhaupt. Aber nehmen wir an, dass Sie in der ioccc konkurrieren (gibt es eine C++ Variante dieser Konkurrenz?), In diesem Fall kann genau das sein, was Sie tun sollen.
Also, um die Frage zu beantworten, ist es, weil Zeigerarithmetik durch die Größe des spitzen Gegenstandes skaliert wird. Wenn Sie int*
verwenden, wird b
durch sizeof(int)
skaliert. Da Sie keinen der beiden Operanden einer Addition skalieren wollen, skalieren Sie mit 1 (die multiplikative Identität), die auftritt, wenn der spitze Typ die Größe 1 hat - was per Definition char
hat.
P.S. Das Programm ist schlecht ausgebildet und kann möglicherweise nicht mit standardkompatiblen Compilern kompilieren.
Dieser Code wird nicht auf GCC und Clang kompiliert. – NathanOliver
Woher hast du diesen Code? – user463035818
Das Beste an diesem Code, dass Sie tun können - werfen Sie es in den Müll und nie wieder erwähnen. – Starl1ght