Red de conocimiento informático - Conocimiento sistemático - Buscamos expertos para analizar código C++

Buscamos expertos para analizar código C++

Esta debería ser una prueba de puntero. No entraré en las funciones de struct a, add y recude. Agregué comentarios a las partes clave. Organicé la siguiente versión de acuerdo con mis propios hábitos de programación y luego modifiqué dos áreas problemáticas. A continuación se muestra la parte clave del código.

{

¿Usar? STD::cout;

¿Usar? STD::endl;

a*? p[5]={? 0?};? ///?Declara una matriz de punteros que contiene cinco elementos, cada elemento es un puntero de tipo A, e inicializa todos los elementos a nulos.

¿Para qué? (int?i?=?0;?i?<?5;?i++)?

p[i]? =?¿Nuevo? a; ///?Aplicar memoria para los elementos del array

A **? ¿páginas? =?p; //Declara un puntero pp que apunta a un puntero, que apunta a un puntero que apunta a a.

? //?*¿páginas? ==?*p,pp==p

? //?p también es un puntero que apunta a la posición inicial de la matriz p[5], que es p[0]. Ahora pp también apunta a p[0].

{

(*p)->ss? =?1;//El valor de asignación ss de?p[0] es 1.

p[1]->ss? =?2;//El valor de asignación ss de?p[1] es 2.

(((p?+?2))-& gt;ss?=?3;//La asignación ss de?p[2] es 3 y la suma del puntero es el desplazamiento, p+ 2 es equivalente a que p[0] esté compensado por dos posiciones, es decir, p[2]

(((pp?+?3))-& gt;ss?=?4;?/ /? El valor ss de p[3] es 4, pp? +?3 significa que p[0] se mueve tres posiciones

PP[4]->ss? El valor ss de p[4] es 5.

¿Para qué (int?i?=?0;?i?<?5;?i++)

{

p[I]-> ss? p>¿Si? (I?==?4)?

cout?"\n";

}

}

{

const? (* FP 1)(a & amp;)?=?Add; de const? , el tipo de parámetro es &;

//?Inicializa fp1 en la dirección de add. a & amp;)?={?recude?};//?Declara una matriz de punteros de función en forma de fp1.//?Inicializa la dirección con el valor de matriz add y recude >

const?a&? (*(*afpp)[2])(a&)?=?&//?Declara un puntero a una matriz de punteros de función y lo inicializa en la dirección de afpp =?afpp

cout? ((*fp1)(*p[0])) .ss? & lt& lt? "\ t" //? (p?+?1)).ss? & lt& lt? "\ t" //Hay un problema con la redacción. ?+?1))).ss?<<?"\t";//?Equivalente a add(*p[1]).ss

cout? AFP?+?1))(*pp[2]).

¿SS? <<? ¿"\t"? //? Equivalente a recuperar(*p[2]).ss.

¿cómo? <<? (*(*afpp)[0])((*(PP?+?3))).ss? <<? ¿"\t"? //? Equivalente a agregar(*p[3]).ss.

¿cómo? <<? (((((*afpp2?+?1)))(*(*(pp?+?4))).ss?<<?"t\n"; //?Equivalente a recude(*p[ 4] ).ss.

}

//?La memoria debe liberarse, de lo contrario habrá una pérdida de memoria

¿Para qué (int? ¿Yo? = ?0;?I?<?i++)

¿Eliminar?

}