#include <stdio.h>
#include <string.h>
void swap(int *p1, int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
main()
{
int n1=10,n2=20;
printf("%d,%d\n",n1++,++n2);
swap(&n1,&n2);
printf("%d,%d",++n1,n2++);
}
Когда я запускаю этот код, вы получаете 10,21 и 12,21. Мой вопрос в том, почему значения N1 и N2 не меняются местами? Поскольку функция swap использует указатели, а метод вызывается по ссылке, они не должны меняться? Или я пропустил какую-то концепцию? Заранее спасибоПочему значения не меняются
Если вы хотите реализовать ссылочную семантику, вам нужно * разыменовать * в какой-то момент вашего собеседника. –