在C语言中什么是定义?什么是声明?它们有何区别?

在C语言中什么是定义?什么是声明?它们有何区别?
举个例子:
 A)int i; 
B)extern int i;


什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。但注意,这个名字一旦和这块内存匹配起来(可以想象是这个名字嫁给了这块空间,没有要彩礼啊。^_^),它们就同生共死,终生不离不弃。并且这块内存的位置也不能被改变。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。


什么是声明:有两重含义,如下:
第一重含义:告诉编译器,这个名字已经匹配到一块内存上了(伊人已嫁,吾将何去何从?何以解忧,唯有稀粥),下面的代码用到变量或对象是在别的地方定义的。声明可以出现多次。
第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。比如你在图书馆自习室的某个座位上放了一本书,表明这个座位已经有人预订,别人再也不允许使用这个座位。其实这个时候你本人并没有坐在这个座位上。这种声明最典型的例子就是函数参数的声明,例如: void fun(int i, char c); 这样一解释,我们可以很清楚的判断:A)是定义;B)是声明。那他们的区别也很清晰了。
记住,定义声明最重要的区别:定义创建了对象并为这个extern 声明变量是在其他文件正声明(也可以看做是引用变量)
### 回答1: 外部变量是定义在文件外部(非函数内部)的变量。它们可以被多个文件的函数访问和修改。 在 C 语言定义外部变量的方式是在文件的顶部(非函数内部)添加变量的声明,并在其他文件通过 extern 关键字来引用它。例如,在文件1定义外部变量x: ``` int x; ``` 在文件2引用这个变量x: ``` extern int x; ``` ### 回答2: C语言,外部变量是指在一个函数之外定义的变量,它的作用域从定义处开始,到文件的结尾为止。外部变量可以在整个C程序被访问和使用,具有全局的范围和生命周期。 外部变量的意义在于: 1. 数据共享:外部变量可以在不同的函数之间共享数据,避免了函数之间传递参数的复杂性和开销。 2. 面向对象的模块化编程:外部变量可以作为不同模块之间交流和协作的桥梁,方便模块之间的数据传递和共享。 3. 简化代码结构:外部变量可以减少函数内部的参数传递,简化函数的接口和实现,提高代码的可读性。 在C程序定义外部变量时,需要将变量的声明放置在函数之外、程序的顶部。例如: ```c #include <stdio.h> int globalVariable; // 定义了一个外部变量globalVariable int main() { globalVariable = 10; // 可以在函数直接使用外部变量 printf("%d", globalVariable); return 0; } ``` 在其他函数使用外部变量时,不需要再次进行声明,只需要直接使用即可。如果在其他函数需要修改外部变量的值,同样不需要进行声明,直接赋值即可。 需要注意的是,为了安全起见,尽量避免过多使用外部变量,因为它们可能会导致代码的可读性和维护性降低。合理使用外部变量能够提高代码的灵活性和可扩展性,但也需要谨慎使用,遵循良好的编程习惯。 ### 回答3: C语言的外部变量具有全局作用域,可以被程序的多个函数共享和访问,有以下几个意义: 1. 数据共享:外部变量可以在程序的多个函数被访问和修改,实现数据在不同函数之间的共享。 2. 提高代码复用性:通过使用外部变量,可以将需要在多个函数使用的数据定义为外部变量,避免了重复定义和传递数据的麻烦。 3. 灵活性:外部变量可以在任意的函数定义和修改,可以方便地在函数之外对其进行操作。 在C程序定义外部变量有以下几种方法: 1. 在函数之外定义:在所有函数之外定义一个变量,它就成为了外部变量,可以被所有函数访问。例如: ``` int count; // 外部变量定义 ``` 2. 使用关键字extern:在函数之外声明一个外部变量,然后在其他函数使用关键字extern来引用该变量。例如: ``` extern int count; // 外部变量声明 void func() { count = 10; // 使用外部变量 } ``` 3. 使用头文件:将外部变量的定义放在一个头文件,然后在需要使用该变量的函数包含这个头文件即可。通过这种方式,可以在多个源文件共享外部变量。 需要注意的是,为了避免重复定义,外部变量的定义只能在一个源文件进行,而其他源文件只能使用extern关键字来声明该变量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值