我用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]]++;
}
答案 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
释放。
calloc
是malloc
的一个版本,在返回之前也会将内存归零。
calloc
有两个参数,数组元素的数量和每个数组元素的大小。
例如
int i = 10;
int* p = calloc(i,sizeof(int));
答案 2 :(得分:2)
C没有new
,只有C ++。
使用calloc代替,在<stdlib.h>
int *t = calloc(n, sizeof(int));