Linguaggio C, passaggio per riferimento

di il
2 risposte

Linguaggio C, passaggio per riferimento

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?

2 Risposte

  • Re: Linguaggio C, passaggio per riferimento

    La sintassi
    int &A
    e' valida SOLO per il linguaggio C++, non per il linguaggio C.

    Il compilatore decide se il sorgente e' C o C++ in base all'estensione del file:

    .c -> linguaggio C

    .cpp, .cxx -> linguaggio C++
  • Re: Linguaggio C, passaggio per riferimento

    Ok, grazie.

    Quindi, riguardo:

    Discutere la nozione di passaggio dei parametri in C, con particolare riferimento alla nozione di
    side-effect.


    dovrei rispondere solo per il passaggio di parametri per valore e per indirizzo? E Riguardo la side-effect che dovrei dire?
Devi accedere o registrarti per scrivere nel forum
2 risposte