malloc没有分配函数中请求的内存。我试过搜索另一个与malloc相关的问题/谷歌,我认为我写的内容应该起作用。 编辑:~~~~是填充码,真的不应该与问题相关= d
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
typedef struct {
int x;
int y;
} Coordenada;
int calculaCaminho(~~~~~Coordenada **posicoes) {
int tam = 5;
~~~~
*posicoes = (Coordenada*)malloc(tam*sizeof(Coordenada));
//I can't access posicoes[k]->y or posicoes[k]->x for whatever value of k that was in the
//range of tam
~~~~
return(~~~~);
}
main() {
~~~~
Coordenada *posicoes;
npassos = calculaCaminho(~~~~, &posicoes);
~~~~
}
有什么想法吗?
答案 0 :(得分:1)
*posicoes = (Coordenada*)malloc(tam*sizeof(Coordenada));
之后,您可以访问(*posicoes)[k].x
,但不能访问posicoes[k]->x
。如果您暂时使用临时指针,您会立即注意到它:
Coordenada * ptr = (Coordenada*) malloc(tam*sizeof(Coordenada));
*posicoes = ptr;
ptr[k].x = 1; // ok
(*posicoes)[k].y = 2; // ok, same as ptr[k].y = 2;
// posicoes[k]->x = 0; // NOT ok
答案 1 :(得分:0)
//无法访问posicoes [k] - &gt; y或posicoes [k] - &gt; x 在中的k //范围tam
您应该按如下方式访问它们:
posicoes[0][k].y ....
或
(*posicoes)[k].y ....
(*posicoes)
和posicoes[0]
将允许您访问已分配内存的第一个元素。之后,您可以通过索引相对于第一个元素访问元素..
答案 2 :(得分:0)
您可以访问此处提到的x
和y
..
*posicoes = (Coordenada*)malloc(tam*sizeof(Coordenada));
for(int k = 0 ; k < tam ; k++)
{
(*posicoes)[k].x = k;
(*posicoes)[k].y = 10*k;
}
也可以在main
中访问,例如:
for(int k = 0 ; k < 5 ; k++)
{
//print .. posicoes[k].x
//print .. posicoes[k].y
}