声明里面的函数语法

时间:2012-01-04 11:08:12

标签: c

我用C编写,而不是C ++或C# 如何在函数内打开附加数组并将0放在其所有元素中 只在一行?

目前我有错误

  

错误1错误C2065:'new':未声明的标识符

     

错误3错误C2143:语法错误:缺少';'在'type'之前

     

错误4错误C2143:语法错误:缺少';'在'['

之前

同一地方的所有错误 - 在新数组的声明中

void dup(int a[], int n)
{
    int i;
    int *t = new int[n]; 

    for(i=0; i<=n; i++)
        t[i] = 0;

    for(i=0;i<n;i++)
        t[a[i]]++;
}

3 个答案:

答案 0 :(得分:4)

尝试在calloc中使用stdlib.h

int *t = calloc(n, sizeof *t);
if (!t) {
    perror("calloc");
    return;
}

答案 1 :(得分:3)

new是特定于C ++和C#的关键字,不能在C中使用。

C中堆上的内存主要通过函数malloc分配,并使用函数free释放。

callocmalloc的一个版本,在返回之前也会将内存归零。

calloc有两个参数,数组元素的数量和每个数组元素的大小。

例如

int i = 10;
int* p = calloc(i,sizeof(int));

http://www.cplusplus.com/reference/clibrary/cstdlib/calloc/

答案 2 :(得分:2)

C没有new,只有C ++。

使用calloc代替,在<stdlib.h>

中找到
int *t = calloc(n, sizeof(int));