【问题标题】:Use of Pointers in a separate function file在单独的函数文件中使用指针
【发布时间】: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 个文件,

  1. Practice.c { main() 函数 }
  2. Add.c { add() 函数 }
  3. Add.h { 头文件 }

它没有指针。

请告诉我哪里出错了。

【问题讨论】:

  • 这个问题的格式很糟糕并且缺少信息(错误)。请重写并重新格式化。
  • 它产生了什么错误?
  • swap() 的原型错误;你声称它需要int,但它确实需要int *(对于两个参数)。如果您的系统对于 int 与指针的大小不同,这将是一个问题。
  • 始终要求编译器警告您 (-Wall -Wextra -pedantic) 并始终尊重编译器给您的警告。
  • @MarcoA。重新格式化完成。

标签: c function pointers gcc


【解决方案1】:

swap.h

swap(int, int);

swap(int *, int *);

您的swap 函数将整数指针作为参数,但您的声明说要采用整数。所以编译器会给你错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-29
    • 2019-03-16
    • 2011-01-29
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多