【发布时间】:2019-11-22 12:37:34
【问题描述】:
简而言之,我的问题只是理解为什么要使用此代码:
int main() {
typedef int* ASElement;
int zero = 0;
int one = 1;
int two = 2;
int three = 3;
ASElement *elements = (int**)malloc(4 * sizeof(ASElement));
*elements = (int*)malloc(4*sizeof(int));
*(elements) = &zero;
*(*(elements+1)) = one; //segementation fault here
printf("%d", *(*(elements+1)));
return 0;
}
不工作?
【问题讨论】:
-
*(*(elements+1)) = one;elements+1指向什么? -
*(elements) = &zero;*elements 和*(elements)是相同的。你打算做什么?也许*(*(elements)) = zero? -
@Blaze - 我已经在指针数组 - 元素上分配了第一个指针(*elements+0),以使用 malloc 指向数组的开头,所以,不应该 *(* (elements+1)) 是该数组的第一项的值吗?
-
@Ctx 不应该
*(elements) = &zero简单地将 *(elements) 数组的第一项设为零? -
@TomerAttali 怎么可能?右边是一个绝对不为零的地址。