一、对指针理解

2019-03-10  本文已影响0人  花季浅忆

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的值。

  1. *p 就是i本身了 ,改变了 *p的值就是改变 i 的值。

2.所有的指针变量只占4个字节,用第一个字节的地址表示变量的地址,比如:

double a = 20d; // a占了八个字节
double *p = &a;// p只占了四个字节,因为p之存储了 a的第一个字节的地址。但是
                       // *p 就代表了a变量本身。同上。

3.要想通过一个函数来改变一个变量的值,就一定要在形参中把改变量的地址传进来(通过&取地址符)

上一篇 下一篇

猜你喜欢

热点阅读