struct ponto *ps = malloc( sizeof(struct ponto) * colunas * linhas );
我在main()上声明了这个。但是我希望它可以全局访问所有功能。我相信这是使用realloc并在文件的开头声明为null或其他东西。这是对的吗?
struct ponto *ps = null;
然后,当我知道数组结构所需的大小时:
ps = realloc (ps, sizeof(struct ponto) * colunas * linhas);
但这似乎并不奏效。有什么提示吗?
答案 0 :(得分:1)
使ps
全局可见需要它是一个全局变量。您可能还需要对列数和行数进行此操作。
struct ponto *ps;
int colunas, linhas;
int main()
{
colunas = /* whatever */;
linhas = /* whatever */;
ps = malloc(sizeof(struct ponto) * colunas * linhas);
/* do other stuff */
}
现在ps
对源文件中的所有函数都是可见的,通过它,它们可以访问它指向的内存。
如果你有多个源文件,你必须在头文件中告诉他们ps
声明它
struct ponto { /* whatever */ }; /* define the struct in the header */
extern struct ponto *ps;
extern int colunas, linhas;
realloc
执行完全不同的操作,它会调整缓冲区ps
的大小。标准C中不存在null
。
答案 1 :(得分:1)
如果你的问题实际上只是变量的范围,你可以这样做:
struct ponto *ps = NULL;
...
int main()
{
ps = malloc( sizeof(struct ponto) * colunas * linhas );
...
}