指针的工作
// swap.h
swap(int, int);
// swap.c
swap(int *i, int *j)
{
int k;
k=*i;
*i=*j;
*j=k;
}
// Practice.c
#include <stdio.h>
#include "swap.h"
main()
{
int i,j;
printf("\nEnter I = ");
scanf("%d",&i);
printf("\nEnter J = ");
scanf("%d",&j);
swap(&i, &j);
printf("\n I = %d",i);
printf("\n J = %d",j);
}
当我在一个文件中编写此程序时,程序已正确执行。现在,我将其分为两部分,Practice.c
具有main()
函数,swap.c
包含swap(int *i, int *j)
函数,但它并没有那么顺利。
以下是我用于执行程序的以下过程。
gcc -c swap.c
gcc Practice.c swap.o -oPractice
一旦我尝试执行第二个语句,它就不会编译并产生错误。
我使用完全相同的过程来执行另一个程序,该程序有3个文件,
它没有指针。
请告诉我我犯了哪个错误。
答案 0 :(得分:5)
在swap.h
更改
swap(int, int);
到
swap(int *, int *);
您的swap
函数将整数指针作为参数,但您的声明表示采用整数。所以编译器会给你错误。