/ / estructura operador de asignación en matrices - matrices, estructura, asignación-operador

Operador de asignación de estructura en matrices: matrices, estructura, operador de asignación

Supongamos que he definido una estructura como esta:

struct person
{
char name [10];
int  age;
};

y declaradas variables de dos personas:

person Bob;
person John;

donde Bob.name = "Bob", Bob.age = 30 y John.name = "John", John.age = 25. y llamé

Bob = John;

La persona estructurada haría una Asignación de miembros y asigna los valores de los miembros de John a los de Bob.

Pero las matrices no se pueden asignar a matrices, así que, ¿cómo funciona la asignación de la matriz de "nombre"?

Respuestas

1 para la respuesta № 1

Cuando el lenguaje C se lanzó por primera vez,no estaba destinado a convertirse en una fuerza poderosa que aún estaría en uso décadas más tarde. Tenía la intención de ser algo que pudiera satisfacer rápida y fácilmente algunas necesidades inmediatas, pero era bastante horrible. Muchas de las características que uno da por sentado, como la capacidad de pasar estructuras por valor o (si recuerdo) incluso asignarlas directamente, no existían. La descomposición de matrices a punteros, sin embargo, fue parte del lenguaje desde el principio.

Cuando las estructuras se volvieron más poderosas en versiones posteriores del lenguaje, no hubo ningún problema para permitir la notación. struct1 = struct2; para representar una copia de struct2 a struct1, ya que tal expresión no tenía ningunaes decir, antes de eso. Por otro lado, los tipos de arreglos tenían sus propias reglas preexistentes, y no habría habido ninguna manera de permitir que la asignación de arreglos funcionara como una asignación de estructura sin romper las docenas de programas que se habían escrito para el lenguaje de flagelación.

En consecuencia, copiando una estructura que contiene unLa matriz funcionará de la manera que uno hubiera esperado que la copia de una matriz funcionaría, porque la descomposición de una matriz en un puntero solo ocurre cuando se accede a la matriz "por nombre". Si una estructura contiene unsigned char byteArray[64];, desde la perspectiva de la estructura que es simplemente un blob de 64 bytes. Si uno se refiere a theStruct.byteArray, esa referencia se descompondrá en un puntero como lo haría una referencia de matriz-variable, pero al asignar theStruct a otra variable del mismo tipo, el compilador ignora las partes internas.