| 复制代码#include <stdio.h>
void change(int n);
int main()
{
        int a= 90;
        change(a);
        printf("%d\n",a);
        return 0 ;
}
void change(int n)
{
        n = 10;
}
此段代码为数值传递,输出的a的值仍为90,因为数值传递改变形参的值不影响实参的值
#include <stdio.h>
void change(int *n);
int main()
{
        int a= 90;
        change(&a);
        printf("%d\n",a);
        return 0 ;
}
void change(int *n)
{
        *n = 10;
}
此段代码为指针传递,调用函数时传入的是a在内存中的地址,所以change进入到地址里修改a的值,输出的a为10
#include <stdio.h>
int main()
{
        int a= 90;
        int *p = &a; //此时的*仅代表是指针类型的变量
        int **pp = &p;//此时的** 仅代表是指向指针类型数据的指针类型的变量
         a= 20;
        *p = 20;//此时的*是访问指针变量p指向的存储空间a,
        //*pp == p//等价替换,此时的*是访问指针变量pp指向的存储空间p,
        //**pp == *p == a
        **pp =20;此时的**是访问指针变量pp指向的存储空间里面的p指向的存储空间a,
        printf("%d\n",a);
        return 0;
}
最后一段代码说明了指向指针的指针,怎么修改int类型a的值,
 |