• C语言之指针


    0x0001:指针分析

    #include <stdio.h>
    #include <stdlib.h>
    void swap_t(int*a,int*b)
    {int p;
      p=*a;                   #借助指针,交换变量值
     *a=*b;
     *b=p;
    
    }
    int main()
    {
       int a,b;
       a=6,b=5;     #a,b的地址不变,但是经指针操作后其中的值交换
       int *p,*q;   #声明变量上,一般变量是被分配合法地址的,但是指针变量p是有地址的,但是p的内容可能是非法地址。
       p=&a;
       q=&b;             
       swap_t(p,q);   #单向传递:只进不出(数值无法回传)swap函数结束后,p,q不变
       printf("%d,%d",*p,*q);
    }       
    
    
    数组与指针
    a[i]=>*(a+i),&a[i]=>(a+i)   等效
    0x0001
    p++;
    *p;
    0x0002
    *p++与*(p++)一致,++与*优先级一致,右结合性,p++:第一步取p的值,*p,后p自增
    0x0003
    *(++p):先自增,后取p,后*p
    因为C++编译器认为*和++是同优先级操作符,它们的结合性都是从右至左,这样一来,对于*p++来说,++只作用在p上而不会作用在(*p)上,所以*p++和*(p++)的效果完全一样!
     
    

    0x0002:指针数组&堆&空类型指针

    这里补充指针数组的知识,与之有关的主要的堆(动态内存分配)

    
    int * p[4];//[]优先级比*高先p[4](数组形式),后与*结合,表示数组中都是地址
    
    
     void * p; //p为空类型(不指向确定)指针变量,不是'任何类型的指针'{提供纯地址}
     malloc原型:void * malloc(unsigned int size)
    int * pt;
    pt=(int *)malloc(100);  // void * 转化为int *
    
    
    
    zer0_1s
  • 相关阅读:
    安卓开发遇到的报错信息
    工作记录
    答辩系统问题
    DWR
    前端vue 里的tab切换 减少dom操作
    前端拖动div 效果
    vue 点击按钮弹窗,点击关闭按钮关闭弹窗。
    前段开发 jq ajax数据处理详细讲解。
    vue计算属性computed和methods的区别
    前段开发 react native tab功能
  • 原文地址:https://www.cnblogs.com/zuoanfengxi/p/12423100.html
Copyright © 2020-2023  润新知