【问题标题】:Ansi C:Is an array's name Stored as a pointer variable? [duplicate]Ansi C:数组的名称是否存储为指针变量? [复制]
【发布时间】:2015-08-28 18:04:49
【问题描述】:

说,我定义了一个数组:

int a[5];

a = &a[0];

是数组开头的地址。

我的问题是,a 是否像指针变量一样存储在内存中的某个位置? 如果是这样,当我尝试打印a&a)的地址时,为什么会得到与a相同的值?

【问题讨论】:

  • 不,a 是一个数组而不是一个指针。请读一本C书。这在关于数组的开篇章节中得到了明确的处理。
  • 你为什么不试试这个作业?你的编译器是怎么说的?你从你的程序中得到什么输出? int * p = a;&a 是哪种类型的?

标签: c arrays addressof


【解决方案1】:

当你声明一个数组时,唯一留出的存储空间是数组元素本身;没有为指向第一个元素的指针预留存储空间。

当编译器看到一个数组表达式不是sizeof& 运算符的操作数,或者不是用于在声明中初始化另一个数组的字符串字面量时,它将转换 将数组表达式转换为指针表达式,指针表达式的值将是数组中第一个元素的地址。

【讨论】:

    猜你喜欢
    • 2017-03-01
    • 2015-08-31
    • 2014-01-02
    • 2023-03-30
    • 1970-01-01
    • 2011-07-08
    • 2020-01-19
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多