【发布时间】:2014-09-14 01:12:41
【问题描述】:
我正在学习 C 语言,实际上在一些可能很明显的问题上停了下来。
void allocateArray(int **arr, int size, int value) {
*arr = (int*)malloc(size * sizeof(int));
if(*arr != NULL) {
for(int i=0; i<size; i++) {
*(*arr+i) = value;
}
}
}
来电者:
int *vector = NULL;
allocateArray(&vector,5,45);
这是来自理解和使用 C 指针的代码。问题是我无法想象这条线是如何工作的:
*(*arr+i) = value;
更准确地说,我不知道为什么我们需要使用 2 个解引用星而不是只写 (*arr+i) = value;
如果能获得一些更好的例子来说明它应该如何以及为什么应该这样,那就太好了。
【问题讨论】:
-
什么是
int **ar?两个星号加在一起是什么意思? -
如果你写 int* p = malloc (size * sizeof (int)); 会容易得多*arr = p;从那时起使用 p 代替 *arr。
-
@PM77-1 这是一个指向 int 的指针。你是对的 gnasher729。当我理解它时,它现在很容易:)
标签: c pointers dereference