Adj*_*jit 1 c memory variable-assignment assignment-operator
假设以下声明:
int *numbers, *inverse;
numbers = inverse = (int *)malloc(n * sizeof(int));
Run Code Online (Sandbox Code Playgroud)
我很想知道这里发生了什么 - 我知道它是正确的,所以首先inverse
要分配内存.然后我设置numbers
等于inverse
,这是否意味着内存位置numbers
将是相同的inverse
?或者它的位置分配相同的内存量&numbers
和&inverse
?
例如,如果我做的inverse[i] = 5
意思是numbers[i] == 5
什么意思?
你有:
int *numbers, *inverse;
numbers = inverse = (int *)malloc(n * sizeof(int));
Run Code Online (Sandbox Code Playgroud)
这和写作一样:
int *inverse = (int *)malloc(n * sizeof(int));
int *numbers = inverse;
Run Code Online (Sandbox Code Playgroud)
变量numbers
只有一个指针的副本inverse
- 它指向同一个地方.但是,您可能会使用一个指针迭代数组,同时从函数返回另一个指针,这可能是拥有两个副本的一个很好的理由.
有一个内存分配; 需要一次调用free()
来释放分配的内存.传递给的值free()
将与分配给inverse
或的原始值相同numbers
.
你也问:
如果我这样做
inverse[i] = 5
意味着numbers[i] == 5
什么?
如果你不改变存储的值或者是inverse
或numbers
,如果i
是在范围0
... (n-1)
,然后在转让之后,平等将举行.指针是相同的(相同类型,相同的值),因此索引它们会产生相同的结果.这inverse[i] == numbers[i]
当然也意味着.