【发布时间】:2014-06-08 15:02:47
【问题描述】:
指针的工作
// 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 个文件,
- Practice.c { main() 函数 }
- Add.c { add() 函数 }
- Add.h { 头文件 }
它没有指针。
请告诉我哪里出错了。
【问题讨论】:
-
这个问题的格式很糟糕并且缺少信息(错误)。请重写并重新格式化。
-
它产生了什么错误?
-
swap()的原型错误;你声称它需要int,但它确实需要int *(对于两个参数)。如果您的系统对于int与指针的大小不同,这将是一个问题。 -
始终要求编译器警告您 (
-Wall -Wextra -pedantic) 并始终尊重编译器给您的警告。 -
@MarcoA。重新格式化完成。