用声明的变量初始化数组

时间:2017-07-27 00:51:25

标签: c arrays pointers variables initialization

我已尝试过以下代码,但它不起作用。如果我给const,则显示“初始化元素不是常量”的错误..它仍然不起作用。请帮忙。

#include<stdio.h>

int* ret()
{
    int x=0;
    int y=0;
    int b[]={x,y};
    return b;
}
int main()
{
    printf("My name is sudha\n\n");
    int* m=ret();
    for(int i=0;i<2;i++)
    printf("%d",m[i]);
    return 0;
}

1 个答案:

答案 0 :(得分:4)

您的代码中有两个错误:

  • 您在初始化程序中使用非常量表达式,
  • 您正在从函数
  • 返回指向local的指针

这可以通过返回手动初始化的malloc - ed数组来解决:

int* m=ret();
for(int i=0;i<2;i++)
    printf("%d",m[i]);
free(m); // <<=== Add this call

完成后,您需要free结果:

outputfile = "f:\mark\python\data.csv"
with open(outputfile, 'w') as f:
    csv_out = csv.writer(f, delimiter=' ')
    csv_out.writerow(['city', 'state', 'population', 'rank'])
    for row in jlist:
        csv_out.writerow(" ".join([col[1] for col in row]))