所以这是在我们班上提出的(我当时缺席):
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的新手。所以是的。
答案 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指针转换为数组
严格地说:你不能。