zoukankan      html  css  js  c++  java
  • C指针决心 ------ 指针表达式

             本文是自己学习所做笔记。欢迎转载。但请注明出处:http://blog.csdn.net/jesson20121020

             所谓的指针表达式是指一个表达式。其结果是一个指针。

           例1.

    int  a,b;

    int array[20];

    int *p;

    p = &a;             //&a 就是一个指针表达式,由于&a的结果就是一个指针。

    int **q = &p;     //&p也是一个指针表达式。

    *q = &b;            //*p和&b都是一个指针表达式。

    p = array;

    p++;                   //同理,这也就是指针表达式。

            例2.

    char *arr[10];

    char **parr = arr;           //arr能够看做是一个指针。代表数组的首地址,这样,arr也是一个指针表达式。

    char *s;

    s = *parr;                        //非常easy看出*parr也是一个指针表达式。

    s = *(parr+2);                 //同理,*(parr+2)是一个指针表达式。


            由于,指针表达式的结果是一个指针,所以指针表达式也满足指针的四个要素。即,指针的类型。指针所指向的类型,指针的值或指针所指向的内存地址,以及指针自身占领的内存。

           另外,须要注意。当一个指针表达式的结果指针已经明白地具有指针自身占领的内存的话,那么这个指针表达式就是一个左值。能够进行自加,自减等操作。否则的话。这个指针表达式就不是一个左值。如例1中的&a就不是一个左值,由于没该表达式的结果指针也就是a的地址并没有占领内存,所以不是一个左值,当然不能进行自加等操作了,但*q就是一个左值。由于在定义时。已经给指针q分配空间了。


         


            

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    Vue动态路由配置-router.addRoute
    安装nginx(Centos和docker)
    前后端分离跨域问题解决方案
    centos7 部署 gitlab
    date命令使用方法
    电脑明明安装了模块,但是pycharm还是找不到怎么办
    shell脚本中字符串截取问题
    linux中每登录一个终端,就会自动执行脚本
    腾讯文档中怎么添加二级缩进符号
    查看CPU某一核的情况
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4751149.html
Copyright © 2011-2022 走看看