zoukankan      html  css  js  c++  java
  • C语言指针

    变量的 直接访问 方式

         按变量的地址(变量名/变量的外号) 存取变量的值

    image

    变量的 间接访问 方式

         将变量的地址放在另一个内存单元中,先到另一个内存单元中取得变量的地址,再由变量的地址找到变量并进行数据存取

    image 

    image

    变量Pointer是一个指针变量(本身是一个变量),它存储的是另一个变量的内存地址(i的内存地址),我们说pointer指向i

    一个变量存储了另一个变量的内存地址,我们说它指向i(另一个变量)

    什么是指针

    指针的概念:一个变量的地址称为该变量的指针

    指针变量:专门用于存储其它变量地址的变量

    指针与指针变量的区别,就是变量值与变量的区别

    image

    指针变量的三要素

    • 指针变量的类型 :和其所指变量的类型一致
    • 指针变量的值:另一个变量在内存的地址
    • 指针变量的名字:起法同普通变量

    指针变量的赋值:

    float *p1=p1的地址

    方式一:指针变量名 =&变量名; &->取地址符

    方式二:通过另一个指针变量赋值

    int i ,*p1,*p2; //声明一个变量i,指针p1和指针p2

    赋值方式一:p1=&i

    赋值方式二:p2=p1

    image

    指针的运算

    1、算术运算

    例如:int *p,i;

    char *q,c;

    p=&i;

    q=&c;

    内存地址示意义如下:

    image

    int 型占据 2个字节,char型占据1个字节

    求: p++ ,q++

    p++ 即 i的地址移1位(2个字节)

    image

    q++,即c的地址移动1位(1个字节)

    image

    2、比较运算

    数组的名称就是一个指针

    image

    3、两个运算符

    *:求其后内存地址中的内容

    &:求变量的内存地址

    image 

    image

    pointer_1指向a,pointer_2指向b

    -----------------------  分割线 ---------------------

    image

    练习

    问:若已执行了 pointer_1=&a,则:&*pointer_1的含义是什么?

    答:pointer_1=&a ,这时pinter_1存储的是 a的地址,

    *pinter_1 是取指针所指向的值,也即 a

    所以 &*pinter_1 就是取 a的地址,相当于 &a

    *取内容,&取地址,两者是互异的,互相抵消

    问:*&a的含义是什么?

    答:&a取的是地址,*地址取的是内容,所以*&a 就是a

    问:(*pinter_1)++相当于什么?

    答:*pointer_1 是取pointer_1所指向的值,所以这里相当于 a++

  • 相关阅读:
    Exection throws和throw
    Exection(二)
    JAVA-Exception
    IDEA初见---输出HelloWorld,并打包成jar包
    Centos6.5安装Tomcat
    Centos6.5下装ZooKeeper
    LInux下装jdk
    python作业高级FTP
    tcp黏包
    计算器
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/3916534.html
Copyright © 2011-2022 走看看