2012-01-04 69 views
0

我是用C語言編寫的,而不是C++或C# 如何在函數內部打開其他數組,並在其所有元素中只放入0, ?函數語法裏面的聲明

此刻我有錯誤

錯誤1錯誤C2065: '新':未聲明的標識符

錯誤3錯誤C2143:語法錯誤:缺少 ';'在「類型」之前

錯誤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]]++; 
} 

回答

4

嘗試在stdlib.h使用calloc

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

新的聲明是特定於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/

+3

沒有找到,在C你不應該投'malloc'或'calloc'的結果。 – 2012-01-04 11:37:35

+0

@凱特湯普森謝謝。從來沒有意識到你不必投射無效指針。 – Dunes 2012-01-05 10:14:16

2

C沒有new,只有C++。

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

int *t = calloc(n, sizeof(int));