Why this error occurs?
Expression ptr[0]
hat char[1]
geben, weil ptr
lika Zeiger auf Array von char[1]
Typ deklariert ist
char (*ptr)[1];
Expression cad
char *
Typ hat und ist gleich der Adresse des ersten Zeichens des Arrays cad
.
Vom C Standard (6.3.2.1 Lvalues, Arrays und Funktion Bezeich)
3 Except when it is the operand of the sizeof operator or the unary & operator, or is a string literal used to initialize an array, an expression that has type ‘‘array of type’’ is converted to an expression with type ‘‘pointer to type’’ that points to the initial element of the array object and is not an lvalue. If the array object has register storage class, the behavior is undefined.
So ist in der linken Seite der Zuweisungsanweisung
ptr[0] = cad;
ein Array vom Typ gibt es char[1]
. Auf der rechten Seite der Zuordnung befindet sich ein Zeiger vom Typ char *
. Diese Typen sind inkompatibel und Arrays haben keinen Zuweisungsoperator.
Es scheint, dass Sie die folgende
#include <stdio.h>
int main(void)
{
char cad[] = "abc";
char * ptr[1];
ptr[0] = cad;
// puts(ptr[0]);
return 0;
}
ptr [0] bedeutet ein einzelnes Zeichen ... cad ein Zeiger ist .. –
Könnten Sie klären, welcher Teil der Fehler, den Sie nicht verstehen? – juanchopanza
Was versuchst du zu tun? Sie sollten ptr [0] = cad [0] –