很抱歉有很多类似的问题,但我无法弄清楚我做错了什么(业余警报!)。
我正在尝试在函数中填充两个数组,然后在main中获取信息。我在main中声明了数组,但是需要在函数中分配它们的内存(这可以解释它们应该有多大)。虽然数组看起来很好,我可以在函数内打印它们,但是当我尝试从main打印时,我遇到了分段错误。
我试图在这个简化的程序中使用填充一个数组的函数进行故障排除 - 它有同样的问题。我想我是在填补我的指针 - 我做错了什么?这是代码和输出:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
void *make_v(double num, double *v)
{
int i;
v = (double *)calloc(5,sizeof(double));
for (i=0; i<5; i++) {
num += 5;
v[i] = num;
}
printf("IN: ");
for (i=0; i<5; i++)
printf("%lf ", v[i]);
printf("\n");
}
main(int argc,char **argv)
{
double *v=NULL;
double num=10.0;
int i;
make_v(num, v);
printf("OUT:\nv:[");
for (i=0; i<5; ++i) {
printf("%lf ", v[i]);
}
}
这输出: IN:15.000000 20.000000 25.000000 30.000000 35.000000 OUT: 分段错误
我在linux中编码,如果这有所作为......
希望有人能提供帮助,谢谢!
答案 0 :(得分:0)
double *make_v(double num)
{
int i;
v = (double *)calloc(5,sizeof(double));
for (i=0; i<5; i++) {
num += 5;
v[i] = num;
}
printf("IN: ");
for (i=0; i<5; i++)
printf("%lf ", v[i]);
printf("\n");
retrun v;
}