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

article/2025/10/12 10:14:58

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

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++编程学习交流俱乐部!【点击进入】

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


http://chatgpt.dhexx.cn/article/wwv3lXBh.shtml

相关文章

变量的定义

变量 变量用于存储编程所使用的数据和方法。 声明一般变量的关键字&#xff1a;var,let,const.其中let和const是es6的语法。 声明其他特殊变量的关键字&#xff1a;function,class,improt&#xff08;先了解&#xff09;等 声明变量 变量用于存储数据,因此可以把变量实际上就…

03-变量的定义

一、变量的定义 1.变量是什么&#xff1f; 一句话概括&#xff1a;变量是用来临时保存数据的&#xff0c;该数据是可以变化的数据。 2.什么时候需要定义变量&#xff1f; 如果某个内容需要多次使用&#xff0c;并且在代码中重复出现&#xff0c;那么可以用变量代表该内容。…

【论文阅读】ICRA2021: VDB-EDT An Efficient Euclidean Distance Transform Algorithm Based on VDB Data Struct

参考与前言 Summary: 浩哥推荐的一篇 无人机下的建图 and planning实验 Type: ICRA Year: 2021 论文链接&#xff1a;https://arxiv.org/abs/2105.04419 youtube presentation video&#xff1a;https://youtu.be/Bojh6ylYUOo 代码链接&#xff1a;https://github.com/zhud…

scipy.ndimage.distance_transform_edt 和 cv2.distanceTransform用法

scipy.ndimage.distance_transform_edt 和 cv2.distanceTransform 的作用都是计算一张图上每个前景像素点到背景的最近距离。 import cv2 import numpy as np from scipy.ndimage import distance_transform_edta np.array(([0, 1, 1, 1, 1],[0, 0, 1, 1, 1],[0, 1, 1, 1, 1]…

java edt,java并发之EDT测试

测试代码如下&#xff1a; 1、耗时计算没有单独起线程处理&#xff0c;耗时计算在EDT线程执行&#xff0c;导致界面没有响应&#xff0c;处于卡死状态 package thread; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.concurrent…

linux服务端修改EDT为东八区,EDT开发环境配置

1 安装条件 512MB内存或更高 Win XP/Win Vista/Win 7/RedHat Linux 32位或者64位操作系统(推荐32位) 安装IE7/8/9、FireFoxLatest Version、Chrome等浏览器中的一种 OracleJRE 1.6或更高版本 2 安装步骤 EDT 0.8.0已经发布发布。用户现在可以在http://www.eclipse.org/edt/#d…

修改linux系统的时间EDT为CST

问题&#xff1a; Centos 系统时间下午时间显示为12小时制 分析&#xff1a; 开始以为是要设置为24小时制 后来执行date命令发现是EDT&#xff0c;EDT 是北美东部夏令时间&#xff0c;比UTC落后4个小时 解决&#xff1a; # mv /etc/localtime /etc/localtime.bak # ln -s …

EDT技术 ug - 第四章节Creation of the EDT Logic (持续更新)

文章目录 Compression Analysisanalyze_compression Preparetion For EDT Logic CreationParameter Specification for the EDT LogicDual Compresson ConfigurationDefine Dual Compression ConfigurationsASYmmetric Input and Output ChannelsBypass Scan ChainsLatch-Based…

java edt,Java Swing 学问篇 - EDT

Java Swing 常识篇之EDT 从毕业到现在用SWING已经一年多&#xff0c;在这里想总结一下过去学到的东西和经验&#xff0c;和各位兄弟姐妹们一起分享。在以后的文章中也会和大家一起来分享一些好的框架。说起JAVA SWING&#xff0c;普遍给人的感觉是“丑、慢、难”&#xff0c;丑…

edt嵌入式确定性测试_CallSerially EDT和InvokeAndBlock(第1部分)

edt嵌入式确定性测试 我们上一次在2008年解释了EDT背后的一些概念&#xff0c;因此&#xff0c;我们很高兴再次撰写有关EDT的文章&#xff0c;在开发人员指南以及有关Udemy的课程中都有关于EDT的部分&#xff0c;但是由于这是最重要的了解在Codename One中&#xff0c;它几乎没…

EDT部署功能介绍

EDT部署功能介绍 当你在开发EDT Web前段程序的时候&#xff0c;你需要接触到EDT部署操作&#xff0c;从而将生成好的RUIHandler和Service的目标代码部署复制到目标Web程序中。和大家所熟知的部署到应用程序服务器上不同&#xff0c;EDT的部署操作是将生成好的Java/JavaScript/…

EDT技术 ug - 第一章节 Getting Start

文章目录 引言TestKompress Compression LogicEDT FlowEDT IP generationEDT synEDT IP pattern gennerationATPG 熟悉工具batch mode执行系统命令 本系列介绍的是Tessent的EDT&#xff08; Embedded Deterministic Testing&#xff09;技术。 参考为EDT tessent的 TestCompre…

DIY01_NE555叮咚门铃

文章目录 项目简介电路原理一、555定时器电路结构及工作原理二、叮咚门铃电路工作原理 原理图与PCB图一、原理图二、PCB图1. 初版2. 改进版 实物图立创打板流程经验总结 项目简介 第一次尝试自己DIY一个小电路设计&#xff0c;笔者选择了相对简单的NE555叮咚门铃。在本篇博客中…

NE555波形发生器手把手教程之NE555内部结构(一)

通过ne555搭建的波形发生器 可实现方波、三角波、正弦波输出 工程链接&#xff1a;https://pan.baidu.com/s/1T-9bdnO1IrWUsjmRTl12zQ 提取码&#xff1a;py66 一、芯片介绍 参数 供应电压&#xff1a;4.5-18V 供应电流&#xff1a;10-15mA 输出电流&#xff1a;225mA (m…

NE555基本原理及相关公式的推导

NE555基本原理及相关公式的推导 基本原理公式推导 基本原理 NE555主要由分压电路&#xff0c;电压比较器&#xff0c;RS触发器三部分组成&#xff1b; 分压电路电压比较器RS触发器提供电压比较器比较电压根据触发信号输出高低电平用于输出矩形波 当 V A > 2 3 V c c V_A&g…

模电学习12. NE555 方波信号发生器

模电学习12. NE555 方波信号发生器 一、NE555 基本功能1. 基本作用2. 基本组成 二、NE555方波生成电路1. 基本原理2. 原理图3. 仿真&#xff08;1&#xff09;RP1 设置为10%&#xff08;2&#xff09;RP1设置为90% 4. 实际电路 一、NE555 基本功能 1. 基本作用 NE555是一款广…

mysql profile 工具Neor Profile

一、下载Download - Neor Profile SQL http://www.profilesql.com/files/download/sqlprofiler-4.1.1.exe Neor Profile 这款免费的mysql 分析工具&#xff0c;这个工具类似于一个代理 本地启动一个mysql 代理服务&#xff0c;类似于MyCat 二、安装完成配置 三、代码连接代…

蓝桥杯NE555定时器与频率测量

使用的是蓝桥杯单片机CT107D实训平台&#xff1a; 555定时器内部&#xff0c;有3个5K的电阻分压。 NE555是一个纯硬件的设计&#xff0c;一旦电路确定了&#xff0c;其功能也就定了。 在蓝桥杯的板子上&#xff0c;555定时器是一个信号发生电路&#xff0c;通过定位器Rb3可改…