Devo rispondere a questa domanda aperta:
Discutere la nozione di passaggio dei parametri in C, con particolare riferimento alla nozione di
side-effect.
Così ho provato nei tre modi: per valore, indirizzo e riferimento.
#include <stdio.h>
void per_valore(int A, int B)
{
A = A + 1;
B = B +1;
printf("A: %d\n", A);
printf("B: %d\n", B);
}
void per_indirizzo(int *A, int *B)
{
*A = *A + 1;
*B = *B +1;
printf("A: %d\n", *A);
printf("B: %d\n", *B);
}
void per_riferimento(int &A, int &B)
{
A = A + 1;
B = B + 1;
printf("A: %d\n", A);
printf("B: %d\n", B);
}
int main()
{
int a = 5, b = 6;
printf("Prima della chiamata\n");
printf("a: %d\n", a);
printf("b: %d\n", b);
printf("Nella chiamata\n");
//per_valore(a, b);
//per_indirizzo(&a, &b);
per_riferimento(a, b);
printf("Dopo della chiamata\n");
printf("a: %d\n", a);
printf("b: %d\n", b);
}
Per valore e per indirizzo tutto ok, ma per riferimento il compilatore mi dice:
error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
void per_riferimento(int &A, int &B)
..................................^
è riferito a questo il side-effect?