指针简单使用
指针两种初始化方式
int *a=&b; 或者int *a; a=&b;
有*a,*b
&a=
&b=
左边是地址,内存中的固定值不能被修改
1 有*a,*b
a = *b;// 报错,整形变量不可以赋值指针变量
2 有*a,*b,若a指向c,b指向d,
a = b;//这样做就相当于a是d的指针了
3 有*a,*b,
*a = b;//报错,指针变量不可以赋值整形变量
4. 有*a,*b,
*a =*b//则是将b指向的值赋给a指向的值
5 有*a,*b,
a=&b//指针的指针
6 有*a,*b,
*a = &b//指针的地址(指针的指针)不能赋给整形变量
7 int *a,若不进行初始化,而调用*a则会空指针异常
8 函数有: main() 有int *a , void fun(int *a)
main()中调用fun(a);
相当于是fun中创建一个实参*a,并将main中的a赋给它
即是*a = a; (*a是一个指针类型的形参,a是实参代表指针a的 值,即是地址)
之所以那样写是因为这相当于在初始化,实际效果是 形参a =实参 a。
所以形参a 和实参a的值相同,所以指向的数值也相同,但是他 们作为指针变量本身 的地址确实各不相同的
9 main(){
int a;
fun(&a); }//这步调用做了 int *a=&a;也就相当于是形参a就是 实参a的指针了
fun(int*a){
int b=1;
a=&b;//这步做的是把形参a的值改为b的地址,也就是相当 于将形参a改成了b的指针了。所以*a等于1,而函数 调用结束后,形参a被释放,实参a不会有任何变 化。没有什么意义。
*a=b;//这步做的是把形参a指向的值修改为b的数值,也就是 说实参a的数值修改
成了1,函数调用结束,形参a被释放,实参a被改变。 达到了我们通过传入变量a的地址来修改变量a的目的。
}