c语言变量申明和定义区别,C语言中变量定义与声明的区别

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:

变量的声明有两种情况:

(1)

一种是需要建立存储空间的(定义、声明)。例如:int a在声明的时候就已经建立了存储空间。

(2)

另一种是不需要建立存储空间的(声明)。例如:extern int a其中变量a是在别的文件中定义的。

前者是"定义性声明(defining

declaration)"或者称为"定义(definition)",而后者是"引用性声明(referncing

declaration)".从广义的角度来讲声明中包含着定义,但是并非所有的声明都是定义,例如:int a它既是声明,同时又是定义。然而对于extern

a来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为"定义",而把不需要建立存储空间称之为"声明".很明显我们在这里指的声明是范围比较窄的,也就是说非定义性质的声明。

例如:在主函数中

int

main()

{

extern int A;

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

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

A;

dosth(); //执行函数

}

int A;

//是定义,定义了A为整型的外部变量(全局变量)

外部变量(全局变量)的"定义"与外部变量的"声明"是不相同的,外部变量的定义只能有一次,

它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变

量的定义点之前)。系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。对于外部变量来讲,初始化只能是在"定义"中进行,而不是在"

声明"中。所谓的"声明",其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是在为了"提前"引用该变量而作的"声明"而已。extern只作

声明,不作定义。

用static来声明一个变量的作用有二:

(1)

对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在

(2)

外部变量用static来声明,则该变量的作用只限于本文件模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初步认识JUnit

初步认识JUnit 目前大多数的基于Java的企业应用软件,肯定少不了单元测试,程序员通过编写单元测试来验证自己程序的有效性;管理者通过持续自动的执行单元测试和分析单元测试覆盖率来确保软件本身的质量。可以说单元测试和集成测试在软件开发整…

校招笔试C语言,校招c ++笔试题汇总

①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题,最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后&#xff0…

STM32CubeMX使用方法及功能介绍

推荐 分享一个朋友的人工智能教程,零基础!通俗易懂!希望你也加入到人工智能的队伍中来! http://www.captainbed.net/strongerhuang Ⅰ、写在前面 学习本文之前可以查看我前面的文章: STM32CubeMX介绍、下载与安装 主要…

君君喂大象C语言答案,2017年北师大版二年级语文上册句子专项复习题及答案

句子专项一、我会读拼音写句子。1. wǒ xiǎnɡ zhī do sh jia wai sh?n mē zha ynɡ sh?n q。_____________________________________________________________________________2.tā tiān tiān ɡēn zhe h? huā zi y qǐ , bǎ h? huā dānɡ ch?nɡ le hǎo p?…

2ab对应的c语言表达式是,编译原理 作业标准答案

《编译原理》第一次作业参考答案一、下列正则表达式定义了什么语言(用尽可能简短的自然语言描述)?1.b*(ab*ab*)*所有含有偶数个a的由a和b组成的字符串.2.c*a(a|c)*b(a|b|c)* | c*b(b|c)*a(a|b|c)*答案一:所有至少含有1个a和1个b的由a,b和c组成…

v4l2视频采集摄像头

v4l2 --是Linux内核中关于视频设备的内核驱动框架,为上层访问底层的视频设备提供了统一的接口。/dev/vidioX 1.打开设备文件 fdopen("/dev/video3",O_RDWR); /dev/video3:视频设备文件名 O_RDWR:可读可写 fd: open成功反…

c 语言 16进制写法,C语言16进制中16怎么表示?

C语言16进制中16怎么表示?关注:275 答案:4 手机版解决时间 2021-02-16 21:21提问者童話被染上了傷2021-02-15 23:02C 中 16进制 16 是用10表示吗?8进制中逢8进一 也写作10?最佳答案二级知识专家X謝你的出現2021-02-15 23:4116进制 16 是用1…

关于JPA方法名创建自动查询

JPA 的根据解析方法名称自动对接口进行实现的方法能节省大量的资源,以下对于解析规则进行列举哈 商品实体类 package com.dionren.zhaoxie.entity.trade;import com.dionren.mvc.entity.EntityBase; import com.dionren.zhaoxie.entity.EntityShoeSku; import io.sw…

查到应看的网址

http://www.zhangxinxu.com/wordpress/2010/12/div-textarea-height-auto/ > div模拟textarea文本域轻松实现高度自适应 https://www.web-tinker.com/article/20054.html 一个很特殊的事件beforeunload(点击确定离开,取消继续) http://www.jb51.net/article/39486.htm ifr…

c语言程序前言,C语言 程序代码编写规范前言

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性。说明l 本文档主要适用于刚刚开…

c语言去字母的其中三个,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includemain(){int acount0,bcount0,ccount0,dcount0;char a;printf("请输入一行字符:\n");a getchar();while (a !\n){switch (a){caseq:casew:casee:caser:caset:casey:caseu:casei:caseo:casep:casea:cases:cased:c…

[CF706D]Vasiliy's Multiset(异或字典树)

题目链接:http://codeforces.com/contest/706/problem/D 1 /*2 ━━━━━┒ギリギリ♂ eye!3 ┓┏┓┏┓┃キリキリ♂ mind!4 ┛┗┛┗┛┃\○/5 ┓┏┓┏┓┃ /6 ┛┗┛┗┛┃ノ)7 ┓┏┓┏┓┃8 ┛┗┛┗┛┃9 ┓┏…

信号与系统与c语言,2016年安徽医科大学生命科学学院信号系统与C语言程序设计之信号与系统复试笔试仿真模拟题...

一、计算题1. 已知系统的算子方程及初始条件如下,求其零输入响应。【答案】(l )由算子方程可以得出其系统的传输函数为由因此代入初始条件和,解出:求得特征根为:所以零输入响应为(2)由算子方程可以得出其系统的传输函数…

android状态栏

郭林《Android状态栏微技巧,带你真正理解沉浸式模式 》转载于:https://www.cnblogs.com/hsji/p/5803527.html

android 自定义属性 双向绑定,如何解决:“在使用自定义视图实现双向数据绑定时,找不到属性’android:text’”的getter?...

我经历了许多类似的问题,但没有一个答案似乎解决了我的问题.我实现了一个自定义EditText,我希望与双向数据绑定兼容.问题是,每次我尝试编译时都会收到错误:Error:java.lang.IllegalStateException: Failed to analyze: android.databinding.tool.util.LoggedErrorEx…

linux用grep查找包含两个关键字的命令

linux用grep查找包含两个关键字的命令 http://zhidao.baidu.com/link?urlVsFxeJXmU7W7hy1UH7eT6QAbUsVz9Ru2ABPuWYHWm4kBvE0ccLDwcvFi821FT5uWvgjJkNEgx80ICQaaR3HxMCr1BnLe8naTKZUwxseZ4qe http://www.linuxidc.com/Linux/2016-01/127944.htm ##查询历史记录 http://blog.sin…

Ext JS 6学习文档-第6章-高级组件

Ext JS 6学习文档-第6章-高级组件 高级组件 本章涵盖了高级组件,比如 tree 和 data view。它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组件。以下是本章将要讨论的主题: TreesData views拖放图片浏览器 — 一个示例项…

android没有apk文件怎么打开方式,ios怎么打开apk文件,安卓无法打开apk文件

?  许多win7系统小伙伴在打开电脑中,经常会看到一些文件格式自己不知道是什么以及不知道要怎么打开,比如apk文件,APK是Android Package的缩写,即Android安装包,几乎所有的安卓应用程序都是这种格式,那么…

android屏幕基础知识

首先,先来上一张图,看看android屏幕分辨率的占比情况 什么是dp,dip,dpi,sp、px ?之间的关系是什么? px:构成图像的最小单位 dp/dip:密度无关像素 以160dpi为基准 1dp1px sp&#xf…

Android模糊查询excel文件内容,【excel】模糊查询关键字

求Excel大神指点迷津。如何批量模糊查找和替换。例如,A1:A100,每个单元格有一段文字。B1:B200,每个单元格有一个关键词。我的目的是在A1:A100中查找包含B1的单元格,找到后把这个单元格内容换成B1的内容。然后查找B2替换B2...一直到B200解决办…