parametros - punteros en c
Restringir palabras clave y punteros dentro de estructuras (2)
También puede utilizar restrict
dentro de una estructura.
struct s {
/* ... */
int * restrict ip;
};
int f2(struct s a, struct s b)
{
/* ... */
}
Por lo tanto, un compilador puede asumir que a.ip
y b.ip
se usan para referirse a un objeto desunido durante la duración de cada invocación de la función f2
.
Mediante el uso de la palabra clave restrict
esta manera:
int f(int* restrict a, int* restrict b);
Puedo dar instrucciones al compilador de que las matrices a y b no se superponen. Digamos que tengo una estructura:
struct s{
(...)
int* ip;
};
y escribe una función que tome dos objetos struct s
:
int f2(struct s a, struct s b);
¿Cómo puedo instruir al compilador de manera similar en este caso para que a.ip
y b.ip
no se superpongan?
Verifique este ejemplo de puntero , podría obtener ayuda.
// xa and xb pointers cannot overlap ie. point to same memmpry location.
void function (restrict int *xa, restrict int *xb)
{
int temp = *xa;
*xa = *xb;
xb = temp;
}
Si dos punteros se declaran como restringidos, estos dos punteros no se superponen.
Editado