在c语言中函数的定义变量的值为,变量定义(C语言中变量的声明和定义)

变量定义(C语言中变量的声明和定义),哪吒游戏网给大家带来详细的变量定义(C语言中变量的声明和定义)介绍,大家可以阅读一下,希望这篇变量定义(C语言中变量的声明和定义)可以给你带来参考价值。

3.函数的声明和定义区别比较简单,带有{ }的就是定义,否则就是声明。

例如:

extern double max(double d1,double d2); //声明

除非有extern关键字,否则都是变量的定义。

4.除非有extern关键字,否则都是变量的定义。

例如:

extern int i; //声明

int i; //定义

程序模块化设计风格概要

1. 不要把变量定义放入.h文件,这样容易导致重复定义错误。

永远不要在.h文件中定义变量。定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量

2. 尽量使用static关键字把变量定义限制于该源文件作用域,除非变量被设计成全局的。

3. 可以在头文件中声明一个变量,在用的时候包含这个头文件就声明了这个变量。

模块化要点

(1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;

(2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;

(3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;

(4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。

一般情况下头文件中只放变量的声明,因为头文件要被其他文件包含(即#include),如果把定义放到头文件的话,就不能避免多次定义变量变量定义,C++不允许多次定义变量,一个程序中对指定变量的定义只有一次,声明可以无数次。

不过有三个例外,一下三中实体的定义也可放到头文件中。

1.值在编译时就已知的const 变量的定义可以放到头文件中

如:const int num(10);

2.类的定义可以放到头文件中

3.inline 函数

这三个实体可以定义在多个源文件中,只要在每个源文件中的定义相同。

示例程序

#include

#include

// 是定义,定义了A为整型的外部变量

// C中定义的变量默认就是extern的,

// 因此一般来说int a = 10 <==> extern int a = 10;

/*extern */int a = 10;

//如果声明有初始化式,就被当作定义,即使前面加了extern。

//只有当extern声明位于函数外部时,才可以被初始化。

int main(void)

{

extern int a; // 声明一个外部extern的int型变量a

// 这是个声明而不是定义,声明A是一个已经定义了的外部变量

// 注意:声明外部变量时可以把变量类型去掉如:extern a;

printf("a = %d\n", a);

return EXIT_SUCCESS;

}

f5687097921b1ad413d34d36b9710d6a.png

在这个程序中,我们再函数外部定义了一个变量

注extern int a = 10;只有当extern声明位于函数外部时,才可以被初始化。

我们后面还会提到这个问题

#include

#include

int main(void)

{

int a; // 定义一个变量, 不初始化

int b = 10; // 定义一个变量, 同时进行初始化

extern int c; // 声明一个外部extern的int型变量a

printf("a = %d\n", a);

printf("b = %d\n", b);

printf("c = %d\n", c);

extern int d = 10;

return EXIT_SUCCESS;

}

在这个程序中,

int a;是个定义,但是未初始化,打印他的值式不确定的,因此编译时会报未初始化的异常。

int b = 10; 是个定义变量定义,并且被正确初始化,打印b的值没有问题。

bb9f58c05f3388125185d41188e527ab.png

但是是个声明,如果要对c进行读写操作,而我们并没有对c进行定义,因此语法检查没有问题,但是在链接时,连接器会找不到c的地址。

c9cb4aeb2acdac5bd0a8d6c6a33dd915.png

对于d再明显不过了,前面我们提到过如果声明有初始化式,就被当作定义,即使前面加了extern。但是只有当extern声明位于函数外部时,才可以被初始化。

现在这个定义很明显被gcc编译器认为是错误的。

07f3bc126a6a76732032f41d767c4656.png

点击打开链接点击打开链接点击打开链接

总结:以上内容就是针对变量定义(C语言中变量的声明和定义)详细阐释,如果您觉得有更好的建议可以提供给哪吒游戏网小编,变量定义(C语言中变量的声明和定义)部分内容转载自互联网,有帮助可以收藏一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值