C语言怎样才能在头文件中实现函数定义?

C语言怎样才能在头文件中实现函数定义?,第1张

C语言在头文件中实现函数定义,可以按如下方法:

新建一个demo.h(也可以为其它文件名)的头文件,在头文件中添加函数定义,如:extern void demo()

新建一个c文件,在文件中将demo.h包含进来:#include“demo.h”,在此文件中将函数的主体写上,如下:

void demo()

{

  printf("Hello.")

     }

经过上述步骤,即可完成在头文件中实现函数定义。

函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原型描述了函数的接口。定义函数的程序员提供函数原型,使用函数的程序员就只需要对函数原型编辑即可。

比如: 【返回类型】 函数名(参数1类型 参数1,参数2类型 参数2,……);

实例:bool swap(int a,int b)

例子中函数的返回类型为bool型,两个参数都是int型,一个名称为a ,一个名称为b

函数声明中的形参名往往被忽略,如果声明中提供了形参的名字,也只是用作辅助文档。另外要注意函数声明是一个语句,后面不可漏分号!

如果是自己写的函数,在声明函数的同时要对函数进行定义。

假设头文件名为head.h,源文件名为main.cpp,两个文件在同一个目录下

在头文件中直接加上int swap(int a,int b)这一句就可以了

在源文件中还要加上include"head.h"

并且加上函数的定义:

bool swap(int a,int b){//swap函数用于两个数据交换

int c

c=a

a=b

b=c

}

注意在头文件中声明后记得在源文件中包含这个头文件,要不然是找不到函数的定义的。

一般为了安全性,只在头文件中进行声明,而不定义,在其它文件中进行定义。给你个例子。因为我学了才一年,所以没法给你说过多的理论,给你两个例子你好好体会把。

简单例子实现输出两个数据。

/*在text。h头文件中进行声明*/

#include<iostream>

using namespace std

void display(int,int)/*使用该函数来实现输出*/

/*在texxt。cpp中进行定义,注意第一行,很重要因为不是c++标准库中的头文件,所以不能用<>,而要用""括起头文件*/

#include "text.h"

void display(int x,int y)

{

cout<<"A="<<x<<"B="<<y<<endl

}

/*在主函数中进行调用函数*/

#include "text.h"

int main()

{

int a,int b

cout<<"please input a &b"<<endl

cin>>a>>b

display(a,b)

return 0

}

下面这个例子实现类的头文件中声明,实现2*3矩阵的加法运算,并进行重载输入输出流。

在/*matrix。h中声明*/

#include <iostream.h>

class Matrix

{

private:

int a[2][3]

public:

Matrix operator + (Matrix&)/*重载加法运算符*/

friend istream&operator>>(istream&,Matrix&)/*重载输入流*/

friend ostream&operator<<(ostream&,Matrix&)/*重载输出流*/

}

/*在matrix。cpp中进行定义*/

#include "matrix.h"

Matrix Matrix::operator +(Matrix&w)

{

Matrix x

for(int i=0i<2i++)

{for(int j=0j<3j++)

x.a[i][j]=this->a[i][j]+w.a[i][j]

}

return x

}

istream&operator>>(istream&w,Matrix&y)

{

for(int i=0i<2i++)

{for(int j=0j<3j++)

cin>>y.a[i][j]

}

return w

}

ostream&operator <<(ostream &x,Matrix&z)

{

for(int i=0i<2i++)

{

for(int j=0j<3j++)

cout<<z.a[i][j]<<" "

cout<<endl

}

return x

}

/*主函数中调用*/

#include "matrix.h"

int main()

{

Matrix c,d,e

cout<<"Please input the first matrix column!"<<endl

cin>>d

cout<<"Please input the second matrix column!"<<endl

cin>>e

cout<<"Here is the plus result of the two matrix columns!"<<endl

c=d+e

cout<<c

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8026456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存