如何将int指针转换为数组

时间:2015-04-23 16:23:15

标签: c arrays pointers

所以这是在我们班上提出的(我当时缺席):

typedef struct{

  int *items;
  int size;
  int max;
}list;

并将一个列表传递给函数:

void append(list *l, int x){

  if(l->size==l->max){
      expand(l);
  }
  l->items[l->size++] = x;
}

我的问题是,int指针如何具有索引?我以为索引用在数组上?可以这样做吗?

我是C的新手。所以是的。

4 个答案:

答案 0 :(得分:4)

指针可以指向其类型的1个或n个元素。没有办法告诉它只是来自宣言。我们可以假设items是数组第一个元素的地址。由于数组按顺序存储它们的元素,因此在索引指针时,实际上应用了第一个地址的偏移量。因此,您索引指针所指向的数组。

int values[5];    // Simple array.
int* p = values;  // p points to the first element of the array values.
p[2] = 34;        // Equivalent to values[2] = 34;

答案 1 :(得分:2)

指针只是为对象/数组/ int分配的内存空间的地址。 你可以在C中找到与内存相关的指针。你只需说,这是我的int,这里是我的数组等......

答案 2 :(得分:0)

任何指针都可以视为数组。数组是一类二等公民,并且在大多数地方编译器将数组视为指针,并且每当数组传递给函数时,编译器实际上传递数组的第一个元素的地址。事实上,a[b]被认为是*(a + b)(这会导致一些非常难以理解的代码!)

因此,在您的结构中,items可以被视为普通整数指针或数组的地址(如此处所示)。

答案 3 :(得分:0)

  

如何将int指针转换为数组

严格地说:你不能。