func()函数返回值为空,通过指针修改了a的值。
func的p是一个类型为int*(整型指针)的变量,它的值在调用时被赋为一个整型变量的内存地址。*p的作用是获取p指向的内存地址的值,给*p赋值就是直接在修改main函数中变量a的内存地址的值。
如果直接传a的值过去,不能直接修改a的内存地址的值,只能通过a=func(a)的方式了。
*p是指针,操作的是实际的数据块,return语句是返回一个指定值给调用者,调用者可选择保留;
如果直接把int型变量a直接传递给指针p,p可能超出用户地址空间,崩溃了。
指针永远操作的是数据块,不论它是元类型(int,float,char......)还是高级结构(函数,结构体,链表,甚至类的对象),只需注意类型匹配和使用规则。
p 虽然是局部变量 但是&a 的地址赋值给p,其实就是对a变量的操作
那么*p=9 a的值也改变了
func(int *p);//参数是地址,那么传递的也要是地址