Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346326
  • 博文数量: 92
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 960
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-21 19:38
文章分类

全部博文(92)

文章存档

2010年(71)

2009年(21)

我的朋友

分类: 嵌入式

2010-06-08 11:24:21

extern 关键字

外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。编译时将外部变量分配在静态存储区。用extern来声明外部变量,以扩展外部变量的作用城。

:extern声明外部变量,扩展它在程序文件中的作用域

#include

void main()

{ int max(int,int);       *外部变量声明*

   extern  A,B;          

   printf("%d\n",max(A,B));

}

  int A=13,B=-8;             *定义外部变量*

  int max(int x,int y)       *定义max函数 *

{ int z;

   z=x>y?x:y;

在多文件的程序中声明外部变量

extern将外部变量的作用域扩展到其他文件。本程序的作用是给定b的值,输入a和m,求a×b和am的值。文件file.c中的内容为:

#include

int A;                     /*定义外部变量*/

void main()                         

int power(int);          /*函数声明*/

    int b=3,c,d,m;

    printf(″enter the number a and its power m:\n″);

    scanf(″%d,%d″,&A,&m);

   c=A*b;

    printf(″%d*%d=%d\n″,A,b,c);

   d=power(m);

    printf(″%d**%d=%d\n″,A,m,d);

  

文件file2.c中的内容为:

extern  A /*声明A为一个已定义的外部变量*/

 int powreint n);

int i,y=1;

      for(i=1;i<=n;i++)

     *A

    return(y);

 

 

 

   return(z);

 }

 

extern声明外部函数

(1) 定义函数时,如果在函数首部的最左端加关键字extern,则表示此函数是外部函数,可供其他文件调用。例如,函数首部可以写为extern int fun (int a, int b),这样,函数fun就可以为其他文件调用。如果在定义函数时省略extern,则隐含为外部函数。

(2) 在需要调用此函数的文件中,extern对函数作声明,表示该函数是在其他文件中定义的外部函数

有一个若干字符的字符串,今输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。

File.c(文件1)

#include

void main()

{ extern void enter_string(char str[]);                               

  extern void detele_string(char str[],char ch);

  extern void print_string(char str[]);*以上3行声明在本函数中将要调用的在其他文件中定义的3个函数*

  char c;

  char str[80];

  scanf("%c",&c);

  detele_string(str,c);

  print_string(str);  }

file2.c(文件2)

   #include

void enter_string(char str[80])  * 定义外部函数

                                                            enter-string*

 {   gets(str);                     *向字符数组输入字符串*

 } 

file3.c(文件3)

void delete_string(char str[],char ch)  *定义外部函数

                                                                 delete_string *

{  int i,j;

   for(i=j=0;str[i]!='\0';i++)

        if(str[i]!=ch)

          str[j++]=str[i];

   str[i]='\0';

}

file4.c(文件4)

#include

void print_string(char str[])

{

   printf("%s\n",str);

} 

 

阅读(2203) | 评论(0) | 转发(0) |
0

上一篇:static 关键字

下一篇:一维数组指针

给主人留下些什么吧!~~