我的程序有2个警告,如何解决?
Warning: expected 'int' but argument is of type 'int *'
Warning: passing argument 2 of 'copie' makes integer from pointer without a cast
Main.cpp的
#include <stdio.h>
#include <stdlib.h>
void copie(int tableauOriginal[],int tableauCopie,int tailleTableau);
int main(int argc, char *argv[])
{
int tableauOriginal[4]={1,2,3,4};
int tableauCopie[]= { };
copie(tableauOriginal,tableauCopie,4);
int i;
for (i = 0; i < 4; i++)
printf("Case: %d\n", tableauCopie[i]);
return 0;
}
void copie(int tableauOriginal[],int tableauCopie,int tailleTableau)
{
int i ;
for (i = 0; i < tailleTableau; i++)
tableauCopie=tableauOriginal[i];
}
答案 0 :(得分:2)
这是一个错误:
int tableauCopie[]= { };
如果您的编译器接受它,那么它必须是编译器扩展 - 可能创建一个零大小的数组。然后,当您使用copie
超出其边界时,会导致未定义的行为。
您必须指定尺寸:
int tableauCopie[4];
您可以使用= { 0 };
对其进行零初始化,但这是不必要的,因为copie
即将填写。
当然,copie
函数应该接受数组为int tableauCopie[]
- 而不是你当前的单个int;它的循环应该有tableauCopie[i] = tableauOriginal[i];
;
答案 1 :(得分:1)
应该是
void copie(int tableauOriginal[],int tableauCopie[],int tailleTableau)
而不是
void copie(int tableauOriginal[],int tableauCopie,int tailleTableau)
答案 2 :(得分:0)
您已将tableauCopie声明为数组。并且在数组的情况下,只传递数组的基地址,因此您应该如下原型化您的函数。
void copie(int tableauOriginal [],int tableauCopie [],int tailleTableau);
或
void copie(int tableauOriginal [],int * tableauCopie,int tailleTableau);
答案 3 :(得分:0)
您应该将数组名称作为指针传递:
#include <stdio.h>
#include <stdlib.h>
void copie(int *tableauOriginal,int *tableauCopie,int tailleTableau);
int main(int argc, char *argv[])
{
int tableauOriginal[4]={1,2,3,4};
int tableauCopie[4]= {0};
copie(tableauOriginal,tableauCopie,4);
int i;
for (i = 0; i < 4; i++)
printf("Case: %d\n", tableauCopie[i]);
return 0;
}
void copie(int *tableauOriginal,int *tableauCopie,int tailleTableau)
{
int i ;
for (i = 0; i < tailleTableau; i++)
tableauCopie[i]=tableauOriginal[i];
}
答案 4 :(得分:0)
应该如下所示tableauCopie是一个数组。
void copie(int tableauOriginal [],int tableauCopie [],int tailleTableau) {
int i ;
for (i = 0; i < tailleTableau; i++)
tableauCopie[i] = tableauOriginal[i];
}