1.先看一个小例子: 就是通过一个函数改变一个变量的值,普通的值传递是改变不了的。
#include<stdio.h>
void fun(int *p)// p:是一个指针变量,
{
*p = 100;
}
int main(void)
{
int i = 6;
fun(&i);// 1.把 i的地址复制给了p 那么p就指向了i。2.那么*p 就是i本身了,不要理解为*p是i的值。3.*p 就是i本身 改变*p的值就改变了的值。
printf("i = %d",i);
return 0;
}
上面的例子fun(&i);,理解如下:
1.把 i 的地址赋值给了p 那么p就指向了i。
2.那么*p 就是i本身了,不要理解为 *p是i的值。
- *p 就是i本身了 ,改变了 *p的值就是改变 i 的值。
2.所有的指针变量只占4个字节,用第一个字节的地址表示变量的地址,比如:
double a = 20d; // a占了八个字节
double *p = &a;// p只占了四个字节,因为p之存储了 a的第一个字节的地址。但是
// *p 就代表了a变量本身。同上。
3.要想通过一个函数来改变一个变量的值,就一定要在形参中把改变量的地址传进来(通过&取地址符)
网友评论