需要帮助理解c中的指针

Fre*_*eme 0 c pointers objective-c concept

我无法理解指针概念,下面是代码.为什么交换(&a1,&a2)输出-5,6而不是6,-5?这些值已经交换了吗?

void swap(int *ptr1, int *ptr2){

     int temp;

      temp = *ptr1;
      *ptr1 = *ptr2;
      *ptr2 = temp;

}

int main (int argc, char *argv[]){

    void swap(int *ptr1, int *ptr2);
    int a1 = -5;
    int a2 = 6;
    int *p1 = &a1;
    int *p2 = &a2;

    NSLog(@" a1 = %i, a2 =%i", a1, a2); // out puts: -5, 6

    swap(p1,p2);
    NSLog(@" a1 = %i, a2 =%i", a1, a2); // out puts: 6, -5

    swap(&a1, &a2);
    NSLog(@" a1 = %i, a2 =%i", a1, a2); // out puts: -5, 6
}
Run Code Online (Sandbox Code Playgroud)

dfa*_*fan 7

你第一次调用swap()交换了两个值,第二个调用交换了它们.