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
  • 相关阅读:
    http 301 和 302的区别
    移动端与PHP服务端接口通信流程设计(增强版)
    导出大量数据到excel表
    c#中两种不同的存储过程调用与比较
    sql存储过程几个简单例子
    高级搜索指令
    SEO 百度后台主动推送链接
    C#利用Web Service实现短信发送(转)
    webservice测试实例
    克服演讲紧张的10个技巧
  • 原文地址:https://www.cnblogs.com/zuoanfengxi/p/12423100.html
Copyright © 2011-2022 走看看