变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:

type variable_list;

在这里,type 必须是一个有效的 C 数据类型,可以是 char、w_char、int、float、double 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:

int i, j, k;char  c, ch;float  f, salary;double d;

行 int i, j, k; 声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。

变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,如下所示:

type variable_name = value;

下面列举几个实例:

extern int d = 3, f = 5; // d 和 f 的声明与初始化int d = 3, f = 5;          // 定义并初始化 d 和 fbyte z = 22;                // 定义并初始化 zchar x = 'x';              // 变量 x 的值为 'x'

不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

C 中的变量声明 变量声明向编译器保证变量以指定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。

变量的声明有两种情况:

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

2、另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。

除非有extern关键字,否则都是变量的定义。 extern int i; //声明,不是定义 int i; //声明,也是定义 实例 尝试下面的实例,其中,变量在头部就已经被声明,但是定义与初始化在主函数内:

实例:

#include <stdio.h>// 函数外定义变量 x 和 yint x;int y;int addtwonum(){// 函数内声明变量 x 和 y 为外部变量extern int x;extern int y;// 给外部变量(全局变量)x 和 y 赋值x = 1;y = 2;return x+y;}int main(){int result;// 调用函数 addtwonumresult = addtwonum();printf("result 为: %d",result);return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

result 为: 3

如果需要在一个源文件中引用另外一个源文件中定义的变量,我们只需在引用的文件中将变量加上 extern 关键字的声明即可。

addtwonum.c 文件代码:

#include <stdio.h>/*外部变量声明*/extern int x ;extern int y ;int addtwonum(){return x+y;}

test.c 文件代码:

#include <stdio.h>/*定义两个全局变量*/int x=1;int y=2;int addtwonum();int main(void){int result;result = addtwonum();printf("result 为: %d\n",result);return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

$ gcc addtwonum.c test.c -o main$ ./mainresult 为: 3

C 中的左值(Lvalues)和右值(Rvalues) C 中有两种类型的表达式:

左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。

左值可以出现在赋值号的左边或右边。 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。 变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

int g = 20;

但是下面这个就不是一个有效的语句,会生成编译时错误:

10 = 20;

最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

值得关注】我的 C/C++编程学习交流俱乐部!【点击进入】

问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

C语言基础教程 之 如何定义变量!相关推荐

  1. C语言基础教程之如何定义变量

    变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; 在这里,type ...

  2. c语言教程变量,C语言-基础教程-C语言常量与变量

    考试大计算机等级站整理: 2.2.1 标识符命名 在C语言中,标识符是对变量.函数标号和其它各种用户定义对象的命名.标识符的长度可以是一个或多个字符.绝大多数情况下,标识符的第一个字符必须是字母或下划 ...

  3. c语言常量类型转换,c语言基础教程常量变量和类型转换,免费版.doc

    c语言基础教程常量变量和类型转换,免费版 第二章??????常量变量和类型转换2.1.1数字常量??? 数字常量包括整型常量和浮点型常量,浮点型常量又称实数.????1.整型常量???? HYPERL ...

  4. c语言指针地址交换程序,C语言-基础教程-指针的地址分配

    我们可以定义指针变量指向任何类型的变量.在上述的处理过程中,指针变量指向的变量通过传递变量的地址来实现.指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的,否则,写入内存单元的值将会使得 ...

  5. 计算机编程c 语言实型数据,C语言-基础教程-C语言实型数据

    C语言-基础教程-C语言实型数据 分类:计算机等级 | 更新时间:2016-07-08| 来源:转载 2.4.1 实型常量 实型常量又称浮点常量,是一个十进制表示的符号实数.符号实数的值包括整数部分. ...

  6. c++语言基础教程第三版习题答案,《C++语言基础教程》吕凤翥习题答案

    <<C++语言基础教程>吕凤翥习题答案>由会员分享,可在线阅读,更多相关<<C++语言基础教程>吕凤翥习题答案(66页珍藏版)>请在人人文库网上搜索. ...

  7. c语言指针指向怎么指,C语言-基础教程-指向指针的指针

    一个指针变量可以指向整型变量.实型变量.字符类型变量,当然也可以指向指针类型变量.当这种指针变量用于指向指针类型变量时,我们称之为指向指针的指针变量,这话可能会感到有些绕口,但你想到一个指针变量的地址 ...

  8. C语言基础教程 之 字符型:char

    C语言基础教程目录:https://blog.csdn.net/SparkLee2013/article/details/85229406 1.字符型变量的定义和输出 字符型变量用于存储一个单一字符, ...

  9. C语言不用文件系统读取文件,C语言-基础教程-非缓冲文件系统

    前面介绍的缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符.字符串.格式化数据,也可以读写二进制数据.非缓冲文件系统依赖于操作系统,通过操作系统的功能对文 ...

最新文章

  1. Gulp 自动化的项目构建工具
  2. MspEmu W.I.P
  3. 20169205实验一 Java开发环境的熟悉(Linux+IDEA)
  4. tensorflow随笔-tf.while_loop
  5. Geospark-SQL加载SHP数据
  6. nssl1162-农夫约的假期【中位数,贪心】
  7. Linux内核中断引入用户空间(异步通知机制)【转】
  8. GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞
  9. bzoj 4289 TAX —— 点边转化
  10. 算法分析与设计-线性时间选择详解(通俗易懂,含图解,附源码)(c++)
  11. Zabbix配置腾讯云短信报警
  12. web前端开发Vue面试题记录
  13. 摸爬滚打半年,我是如何从小白进阶到渗透测试工程师
  14. html5 drag移动位置,HTML5拖拽功能drag
  15. 基于空间直方图meanshift跟踪
  16. README.md的内容格式
  17. Mysql数据库(关系型与非关系型数据库)
  18. VS2010 MSDN安装
  19. 【组合逻辑电路】如何从真值表中求解逻辑函数?
  20. Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题

热门文章

  1. Ubuntu中Firefox不能访问简书
  2. List和Map集合遍历的3种方式
  3. linux设置打开终端快捷键
  4. Keil环境添加STC系列单片机
  5. ContentProvider简单浅析
  6. 关于ddk环境的配置
  7. python中unicode函数的包_Python unicodeutil包_程序模块 - PyPI - Python中文网
  8. 求素数的python程序,Python-求素数程序
  9. 决策树 基于python实现ID3,C4.5,CART算法
  10. idea常用护眼色的RGB值调整