c语言中a2
‘壹’ c语言中,是否可以调用其它文件的函数
可以调用。
一、从一个源文件里调用另一个源文件的函数。在源文件A1.c中调用A2.c 中的函数有两种方法:
1、在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:
在A2.c中:有函数void A2(){...};。
在A1.c中:在文件前头增加一行:void A2();就可以了。
2、把A2.c中完整定义的函数的原型,写到一个A2.h文件中,然后在A1.c的文件头增加#include "A2.h"就可以了。
以上两种方法,在A1.c中都可以正常的调用,就跟在A2.c中调用一样。
其实函数默认是外部的,只要在其他文件中声明就能使用;但是注意如果在前面加上static,就只能在本文件中使用了,不能再被其他的文件调用。
二、编写头文件:
1、一个.h文件要 对应有一个.c文件,这样链接器就可以调用这个文件里的函数。比如a.h 和 a.c。
在.h文件中:
#ifndef __A_H_
#define __A_H_
#include<stdio.h>
void trans2(double B) ;
double trans1() ;
#endif
2、把相应的函数定义写在.c文件中。这里要强调一点:要加上#include ".h",这个一般作为一种工程规范。因为如果.c文件中的函数也需要调用同个.c中的其它函数,那么这个.
c往往会include对应的.h,这样就不需要为声明和调用顺序而发愁了。比如头文件里进行了变量的声明,这个时候对应的.c文件是一定要加上这个头文件的。
3、再在其他的main.c文件开头添加#include "a.h"。
(1)c语言中a2扩展阅读:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。
‘贰’ c语言中,a 和a[] 有什么区别
a[]比a少一维,我具体给你解释下。
几个元素可以组成数组,而几个一维数组可以组成二维数组,如此一直增加维数。
比如说a[0]=2,a[1]=1,a[2]=3,组成一个一维数组,这就是a.但是,你要注意,a不是直接把这些东西都存着的,a只存首地址。
假设定义了一个二维数组a[3][3].这时候a[0],a[1],a[2]就不再是元素了,而代表的是一个有三个元素的一位数组,而此时的a就是一个二维数组。如果感觉这个有点困难没关系,等学习了指针什么的久很好理解这个了。
再说说你给的程序,你是不是在疑问为什么gets()直接给str1 就可以了?还有那个输出函数,为啥只用给str1就可以?
这得给存储方式有关,字符串就是字符的二维数组,gets()需要输入字符串的首地址,这个还算好理解,因为你应该学过了scanf()了,二者差不多,关键是为什么输出函数直接就写了str1呢?printf()之前你学的一般都是(printf("%d",a[1]));这种类型的。这里为啥要填一个地址参数呢?这是因为你前面是%s s代表字符串,字符串本身就是二维的,因此,你当然不能只给他一个单独的元素了,那么,你给了首地址他如何知道你这个字符串是啥呢?因为字符串都是顺序存储的,更重要的是字符串在结尾处有个标志“/0”,因此,你只要给力他首地址,他就知道从哪里开始,从哪里结束了。
纯手打,望采纳。