我在下一个代码中有一个奇怪的错误(它正在做多项式除法)。
不确定,但正如我所见,问题在于方法的声明。在代码之后,Iv'e列出了我不断得到的错误。
代码如下:
1
2 int[] mul(int d[],int t,int idxq);
3 int[] sub(int a[],int b[]);
4 int check(int r[],int lengthr);
5 int[] cp(int a[]);
6 int[] div(int n[],int d[]);
7
8
9
10 int[] mul(int d[],int t,int idxq){
11 int i;
12 int size=sizeof(d)/sizeof(d[0]);
13 int c[size];
14 for(i=size-1;i>0;i--)
15 c[idxq+i]=d[i]+t;
16 return c;
17 }
18
19 int[] sub(int a[],int b[]){
20
21 int i;
22 int j;
23 int size=sizeof(a)/sizeof(a[0]);
24 int fin[size];
25 for(j=0;jsize;j++)
26 fin[j]=a[j];
27 for(i=0;isize;i++)
28 fin[i]=a[i]-b[i];
29
30 return fin;
31 }
32
33 int check(int r[],int lengthr){
34 int i;
35 for(i=0;i<lengthr;i++){
36 if(r[i]!=0)
37 return 1;
38 }
39 return 0;
40 }
41
42
43 int[] cp(int a[]){
44 int size=sizeof(a)/sizeof(a[0]);
45 int i;
46 int fin[size];
47 for(i=0;i<size;i++)
48 fin[i]=a[i];
49
50 return fin;
51 }
52
53 int[] div(int n[],int d[]){
54 int idxq=0;
55 int t=0;
56 int r[sizeof(n)/sizeof(n[0])]=cp(n);
57 int lengthr= sizeof(r)sizeof(r[0]);
58 int lengthd= sizeof(d)sizeof(d[0]);
59
60 while(check()!=0 && r[lengthr-1]=d[sizeof(d[0]])
61 t=r[lengthr-1]d[sizeof(d[0]])-1];
62 idxq=lengthr-d[sizeof(d[0]])-1]
63 q[idxq]=t;
64 r=sub[r,mul(d,t,idxq)];
65 idxq=0;
66
67 }
68
69 int main(){
70
71 int a[4]={-42,0,12,1};
72 int b[2]=(-3,1);
73 div(a,b);
74 }
以下是错误:
q6.c:2: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c:3: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c:5: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c:6: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c:10: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c:19: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c:43: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c:53: error: expected identifier or Ç ( Ç before Ç [ Ç token
q6.c: In function Ç main Ç :
q6.c:72: error: invalid initializer
谢谢你的帮助!:)
最佳答案
一点也不奇怪。
C没有作为一等公民的数组;不能从函数返回它们。
此外,这:
int size=sizeof(d)/sizeof(d[0]);
无效,因为传递给函数的任何数组都将衰减为指向第一个元素的指针,因此
sizeof d
将为sizeof (int *)
。需要将数组长度作为单独的参数传递。