Maison >développement back-end >C++ >Pourquoi C et C autorisent-ils l'affectation de tableaux par membres dans les structures mais pas pour les tableaux autonomes ?
Pourquoi l'affectation de tableaux par membres dans les structures est prise en charge en C et C
Bien que l'affectation de tableaux par membres soit généralement interdite en C et C, elle est pris en charge dans les structures. Cette contradiction apparente découle de l'évolution historique de ces langages.
Dans les définitions de structures, les tableaux ont été introduits comme un moyen pratique d'allouer de la mémoire contiguë aux données. Cependant, dans les premières itérations du C, les tableaux n'étaient que de simples pointeurs vers des régions mémoire. L'attribution d'un tableau à un autre entraînait donc une affectation de pointeur, et non une copie par élément.
Ce comportement a persisté même lorsque l'affectation de structure a été ajoutée dans K&R C. Au lieu de définir un opérateur d'affectation distinct pour les structures, le compilateur j'ai simplement utilisé une opération de copie de mémoire (memcpy) pour attribuer tous les membres. Cela incluait effectivement des tableaux dans les structures.
Par conséquent, l'affectation de structure introduisait implicitement une forme d'affectation de tableau dans le contexte des structures. Cependant, cette affectation est restée limitée à l'intérieur des structures, et l'affectation d'un tableau directement à un autre tableau, même s'il est contenu dans une structure, n'est toujours pas prise en charge en C et C .
Cette différenciation entre les tableaux au sein des structures et les tableaux généraux servent à deux fins :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!