#include
#define M 100
void arrout(int ,int);
int arrin(int *);
main()
{
int s[M],k;
k=arrin(s);
arrout(s,k);
}
int arrrin (int *a)
{
int i,x;
i=0;
scanf("%d",&x);
while(x>=0)
{
*(a+i)=x;
i++;
scanf("%d",&x);
}
return i;
}
void arrout(int *a,int n)
{
int i;
for (i=0;i<n;i++)
printf(((i+1)%5==0)?"%4d\n":"%4d",(a+i));
printf("\n");
}
程序编译没有问题,为什么执行后提示有如下的错误呢?
--------------------Configuration: B - Win32 Debug--------------------
Linking...
b.obj : error LNK2001: unresolved external symbol "int __cdecl arrin(int *)" (?arrin@@YAHPAH@Z)
Debug/B.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
B.exe - 1 error(s), 0 warning(s)
请各位老师解答一下呗。谢谢啦。
int zip[4] = {1,2,3,4};// 初始化一个数组
zip == &zip[0] // 这个没问题
那&zip 是什么意思 ?
printf("zip = %p &zip= %p\n",zip,&zip); // 这两个输出的值为什么一样 都是数组首元素的地址?
看指针和多维数组的时候搞糊涂了,现在一维的也有点懵。......
答案就在这里:c语言数组指针的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
你在函数实现的时候多输入了一个r:int arrrin (int *a)
声明时是:int arrin(int *);
error C2664: “arrout”: 不能将参数 1 从“int [100]”转换为“int”。这是我的编译器给出的error。说明你的arrout(int ,int)的输入参数应该是int型,现在你传入的参数是数组,显然有问题。
这个看着更清除,
``
#include
#define M 100
void arrout(int ,int); //question1 : 定义和声明不一致
int arrin(int *);
main()
{
int s[M],k;
k=arrin(s);
arrout(s,k);
}
int arrin (int *a) /*question2 : 定义和声明不一致,定义arrin 声明是 arrrin */
{
int i,x;
i=0;
scanf("%d",&x);
while(x>=0)
{
*(a+i)=x;
i++;
scanf("%d",&x);
}
return i;
}
void arrout(int *a,int n)
{
int i;
for (i=0;i<n;i++)
/*question3 : %d 是 integer 但是 a+i 是 point 类型,类型不一致 ,/
printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
printf("\n");
}
#include
#define M 100
void arrout(int ,int); //question1 : 定义和声明不一致
int arrin(int *);
main()
{
int s[M],k;
k=arrin(s);
arrout(s,k);
}
int arrin (int *a) /*question2 : 定义和声明不一致,定义arrin 声明是 arrrin */
{
int i,x;
i=0;
scanf("%d",&x);
while(x>=0)
{
*(a+i)=x;
i++;
scanf("%d",&x);
}
return i;
}
void arrout(int *a,int n)
{
int i;
for (i=0;i<n;i++)
/*question3 : %d 是 integer 但是 a+i 是 point 类型,类型不一致 ,/
printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
printf("\n");
}
#include <stdio.h>
#define M 100
void arrout(int *,int); //question1 : 定义和声明不一致
int arrin(int *);
main()
{
int s[M],k;
k=arrin(s);
arrout(s,k);
}
int arrin (int *a) /*question2 : 定义和声明不一致,定义arrin 声明是 arrrin */
{
int i,x;
i=0;
scanf("%d",&x);
while(x>=0)
{
*(a+i)=x;
i++;
scanf("%d",&x);
}
return i;
}
void arrout(int *a,int n)
{
int i;
for (i=0;i<n;i++)
/*question3 : %d 是 integer 但是 a+i 是 point 类型,类型不一致 ,*/
printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
printf("\n");
}