zoukankan      html  css  js  c++  java
  • [C语言基础] 数组与指针之间的引用

    通过指针引用数组,通过数组引用指针,你搞明白了么?通过下面3种情形来了解一下数组和指针

     

    Case 1.

    unsigned char arry[10];
    unsigned char *ptr;
    unsigned char a, b, c;

    ptr = arry;
    a = ptr[0];
    b = ptr[1];
    c = ptr[2];

    Case 2.

    unsigned char arry[10];
    unsigned char *ptr;
    unsigned char a, b, c;
    
    ptr = arry;
    a = *ptr;
    b = *(ptr+1);
    c = *(ptr+2);

    Case 3.

    unsigned char *ptr = (unsigned char *)0x20000000;
    unsigned char a, b, c;
    
    a = ptr[0];
    b = ptr[1];
    c = ptr[2];

     

    以上3种情形编译都能通过,想要表达的是怎样用数组的方式(下标)表达一个指针内容,和怎样用指针变量的方式表达一个数组。

    对于Case 1,C语言规定,数组名(不包括形参数组名,形参数组并不占据实际的内存单元)代表数组中首元素(即序号为0的元素)的地址,所以ptr指向数组Arry的首地址。那么带下标的指针变量是什么含义呢?其实在程序编译的时候,对下标的处理方法是转换为地址的,对ptr[i]处理成*(ptr+i)。

    Case 2 是指针的常规引用,Case 3和Case 1类似,都是带下标的指针变量的应用。

     

    通过以上的简单分析,可以得出一个结论,下标法直观,指针变量法效率高。

          [参考]:

    [1] 谭浩强著. C程序设计教程. 北京:清华大学出版社,2007

    /×××××××××××××××××××××××××××××××××××××××× THE END××××××××××××××××××××××××××××××××××××××××××××/

  • 相关阅读:
    网络编程-Python的socket库
    Python -用虚拟环境保存库文件
    Python --文件的读写
    VIM--常用操作
    libpcap -学习1
    Python -装饰器
    C++ 关于map,function的简单应用
    UVAlive 3635 (13.08.23)
    C语言中的整型提升(integral promotion)
    [置顶] 从一位数组中提取最小k个元素
  • 原文地址:https://www.cnblogs.com/mr-bike/p/3661990.html
Copyright © 2011-2022 走看看