在c中起作用的指针?

问题描述 投票:-1回答:2

我正在学习c(在ANSI c中编程->第五版),并且遇到以下问题:

我正在实现一个带有函数指针的程序

#include<stdio.h>

//void swap (int *a, int *b);                      //function declaration
int main() 
{
  int m = 25;
  int n = 100;

  printf("m is %d, n is %d\n", m, n);
  swap(&m, &n);                                    //calling a function
  printf("m is %d, n is %d\n", m, n);
  return 0;

}

void swap (int *a, int *b)                         //function implementation
{
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
}

在上面的程序注释中,void swap (int *a, int *b);行然后是程序运行文件,但在此遇到问题时给出一个建议为什么在这里给出建议

main.c:10:3​​:警告:隐式声明函数'swap'] >> [-Wimplicit-function-declaration]main.c:16:6:警告:交换类型与冲突main.c:10:3​​:注意:先前的'swap'隐式声明在这里m是25,n是100m为100,n为25

当我取消注释此行void swap (int *a, int *b);然后程序运行正常时

#include<stdio.h>

void swap (int *a, int *b);                      //function declaration
int main() 
{
  int m = 25;
  int n = 100;

  printf("m is %d, n is %d\n", m, n);
  swap(&m, &n);                                    //calling a function
  printf("m is %d, n is %d\n", m, n);
  return 0;

}

void swap (int *a, int *b)                         //function implementation
{
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
}

问题是为什么在上面的程序中不允许这样做?>

void swap (int, int);              //function declaration

并输入错误

错误:

“交换”的类型冲突

void swap(int * a,int * b)//函数实现

但允许在本书的示例中使用

enter image description here

我正在学习c(在ANSI c中编程->第五版)并面对以下问题:我正在实现一个程序,该程序具有指向函数#include // void swap(int * a,int * b)的指针; ...

c function-pointers
2个回答
-1
投票

**不太确定**,但是我认为只有在有一个参数的情况下才可以这样做。我的意思是我可以int main(无效)但是之后,我必须做:int main(int argc,char ** argv)


-1
投票

**不太确定**,但是我认为只有在有一个参数的情况下才可以这样做。我的意思是我可以int main(无效)但是之后,我必须做:int main(int argc,char ** argv)

© www.soinside.com 2019 - 2024. All rights reserved.