指针

作者: 爱生活_更爱挺自己 | 来源:发表于2020-07-02 22:07 被阅读0次

    指针

    • 就是保存地址的变量

      int i;

      int *p=&i;

    指针变量

    • 变量的值是内存的地址
      • 普通的变量的值是实际的值
      • 指针变量的值是具有实际值的变量的地址

    作为参数的指针

    • void(int *p);

    • 在被调用的时候得到了某个变量的地址

      • int i=0;f(&i);
    • 在函数里面可以通过这个指针访问外面的这个i;

    #inlcude<stdio.h>
    
    void f(int *p);
    
    int main(void)
    {
        int i = 6;
        printf("&i=%p\n",&i);
        f(&i);
        
        return 0;
    }
    
    void f(int *p)
    {
        printf(" p=%p\n",p);
    }
    
    &i=0xbff17d70
     p=0xbff17d70
    

    访问那个地址上的变量*

    • *是一个单目运算符,用来访问指针的值所表示的低智商的变量

    • 可以做右值也可以做左值

      • int k = *p;
      • *p = k+1;
    #inlcude<stdio.h>
    
    void f(int *p);
    void g(int k);
    
    int main(void)
    {
        int i = 6;
        printf("&i=%p\n",&i);
        f(&i);
        
        return 0;
    }
    
    void f(int *p)
    {
        printf(" p=%p\n",p);
        printf("*p=%d\n", *p);
    }
    
    void g(int k)
    {
        printf("k=%d\n",k);
    }
    
    &i=0xbff17d70
     p=0xbff17d70
    *p=6
    k=6;
    
    #inlcude<stdio.h>
    
    void f(int *p);
    void g(int k);
    
    int main(void)
    {
        int i = 6;
        printf("&i=%p\n",&i);
        f(&i);
        
        return 0;
    }
    
    void f(int *p)
    {
        printf(" p=%p\n",p);
        printf("*p=%d\n", *p);
        *p = 26;
    }
    
    void g(int k)
    {
        printf("k=%d\n",k);
    }
    
    &i=0xbff17d70
     p=0xbff17d70
    *p=6
    k=26
    

    *左值之所以交左值

    • 是因为出现在复制号左边的不是变量,而是值,是表达式计算的结果;

      • a[0]=2;
      • *p=3;
    • 是特殊值,所以叫做左值

    相关文章

      网友评论

          本文标题:指针

          本文链接:https://www.haomeiwen.com/subject/rkmdqktx.html