zoukankan      html  css  js  c++  java
  • C语言 数组与指针难点

     C陷阱与缺陷中关于数组与指针部分做了清晰的讲解,解除了我对于数组的很多困惑。特摘取部分内容以作记录。

    数组指针难点一:

    定义数组 int a[3];

    除了a被用作运算符sizeof的参数这一情形,

    在其他所有的情形中,

    数组名a都代表指向数组a中下标为0的元素的指针

    个人理解为右图的逻辑结构(在实际内存中不一定如此)

    因此,我们不难得出一个推论,*a即数组中下标为0的元素的引用。

    例如,我们可以这样写*a = 84;

    这个语句将数组a中下标为0的元素的值设置为84。

    同样道理,*(a+1)是数组a中下标为1的元素的引用,

    依次类推。概而言之,*(a + i)即数组a中下标为i的元素的引用;

    这种写法是如此常用,因此他被简记为a[i]。

    又因为a + i与i + a的含义相同,因此a[i]与i[a]具有同样的含义。但不推荐后种写法。

    难点二:

    给一个指针加上一个整数,与给该指针的二进制表示加上同样的整数,两者的含义截然不同。

    如果定义一个指针ip指向一个整数,那么ip + 1指向的是计算机内存中的下一个整数

    在大多数现代计算机中,他都不同于ip所指向地址的下一个内存位置

    因此,如果让ip = a,即ip也指向数组a中下标为0的元素。

    ip + 1指向的是数组a中下标为1的元素。

  • 相关阅读:
    HDU 2955 Robberies
    HDU 2546 饭卡
    poj 3628 Bookshelf 2
    poj 3624 Charm Bracelet
    celery -1
    ☀【Grunt】插件
    【MooTools】
    【Grunt】
    ↗☻【PHP与MySQL程序设计 #BOOK#】第3章 PHP基础
    【CSS】
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/2842173.html
Copyright © 2011-2022 走看看