普通情境下指针
int *a = &b; int b = 1;
int* 表示a是指向int型的指针变量,
所以 a 可以存放地址,
示例:存放的b的地址。
a,表示&b的别名,是地址的别名
所以 可以通过 a 来找到 b 来进行操作。
类似于,b是1的别名。
*
这是一个解引用的作用
通过 指针里存放的地址,找到对应的变量,进行访问等操作。
示例;
a 里面存放的是 b的地址。
当你输出a的值时,得到一串储存地址。
但是当你去输出 *a 时你就会得到 b里面的值。输出1。
结构体指针
你创建了一个名字是 emp的结构体,
struct employee{
int name;
int weigh;
}emp;
现在有一个指针 struct emp *qq;
当你在使用 qq时,
qq->name; 此时不用使用*qq 来进行解引用,因为->包含对其的解引用。
在函数的应用
如果你写了一个函数,传入了 已有的参数 int a=0;
现在你使用函数对a进行修改。
使得其变为1;
但是在主函数中,你如此使用该函数,并不能改变 a 的值,
输出结果是,
0
0
因为函数传入的参数a是a的副本
副本修改不影响主本。
若想使得 a 可以通过函数被修改,则需要,使用指针,找到a的地址,对其进行修改。