【问题标题】:Array of pointers and its significance指针数组及其意义
【发布时间】:2018-08-08 07:32:42
【问题描述】:
int *A[10];

如果我有上面的指针数组,谁能解释一下声明 A[2][3] 的意义吗? A[2][3]可以存储什么样的值?

【问题讨论】:

  • 不知道A[2]指向什么,没有人能回答这个问题。
  • A[2][3] 不是声明。
  • 我在问 A[2][3] 是否可以存储整数或整数地址?如果是,那怎么办?
  • A[2][3] 可以存储一个整数
  • ...假设您实际上使这些指针指向确定和正确的东西,而现在,它们没有。

标签: c arrays pointers


【解决方案1】:

我认为你错过了数组的概念。

当我们说int A[10]时,

我们的意思是一个由 10 个整数组成的数组。

当我们说int *A[10] 时,这意味着一个由 10 个整数指针组成的数组。 所以 A[0], A[1], A[2]... 中的每一个都指向一个可以保存整数的内存位置。 但是我们需要决定并声明它们的大小,比如使用 malloc。

说,

A[2]= malloc(sizeof(int)*4)

现在 A[2] 指向一个由 4 个整数组成的数组。

所以 A[2][3] 现在是一个有效整数

如果没有使用 malloc 或其他一些内存分配函数,A[2][3] 可能没有被定义并且访问这样的位置是UNDEFINED BEHAVIOUR

【讨论】:

    猜你喜欢
    • 2012-08-07
    • 2013-04-17
    • 1970-01-01
    • 2016-09-30
    • 2011-04-20
    • 2017-05-05
    • 2014-10-03
    • 2021-09-29
    • 1970-01-01
    相关资源
    最近更新 更多