zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    多项式的一些操作
    AtCoder Grand Contest 036E
    THUWC2017 随机二分图
    THUWC2017 在美妙的数学王国中畅游
    SDOI2017 切树游戏
    ZJOI2017 树状数组
    HNOI2015 接水果
    LOJ6503 Magic
    Charles 抓去app接口的使用
    mysql 字符串类型和数字对比的坑
  • 原文地址:https://www.cnblogs.com/zuoanfengxi/p/12423100.html
Copyright © 2011-2022 走看看