C语言中对变量的理解

news2024/9/27 23:32:10

        变量(variable)是程序中不可或缺的组成单位,是最基本的存储单元。

1.什么是变量?

Ⅰ.概念:

  • 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化

  • 通过变量名,可以访问这块内存区域,获取里面存储的值

  • 变量的构成包含三个要素:数据类型变量名存储的值

  • C语言中变量声明的格式:数据类型 变量名 = 变量值

Ⅱ.作用:

        用于在内存中保存数据。

Ⅲ.注意:

  • C语言中每个变量必须先声明,后使用

  • 不同的数据类型,占用的空间大小不一样。

  • 一旦声明,变量的类型就不能在运行时修改。

2.变量的声明与赋值

Ⅰ.声明

格式:

数据类型  变量名;  //声明变量的语句必须以分号结尾

例子:

int width,height;

// 等同于
int width;
int height;

Ⅱ.赋值

        变量声明时,就为它分配内存空间,但是不会清除内存里面原来的值。这导致声明变量以后,变量会是一个随机的值。所以,变量一定要赋值以后才能使用。

例子:

先声明再赋值

int var; // 声明变量
var = 3; // 给变量赋值

声明和赋值一起

int var = 3;

多个相同类型变量的赋值

int var1 = 1, int var2 = 2;

连续赋值

int var1, var2, var3;
var1 = var2 = var3 = 999;
printf("%d %d %d", var1, var2, var3); // 输出结果:999 999 999

3.变量的作用域

  • 变量的作用域:其定义所在的一对{ }内

  • 变量只有在其作用域内才有效。出了作用域,变量不可以再被调用。

  • 同一个作用域内,不能定义重名的变量。

  • C 语言的变量作用域主要有两种:文件作用域(file scope)和块作用域(block scope)。

Ⅰ.文件作用域(file scope)

        指的是,在源码文件顶层声明的变量,从声明的位置到文件结束都有效。全局变量

int x = 1; // 在main()函数外面定义的全局变量
int main() {
	printf("%d\n", x); // 在main()函数里可以调用x变量
    return 0;
}

Ⅱ.块作用域(block scope)

        指的是由大括号( {} )组成的代码块,它形成一个单独的作用域。凡是在块作用域里面声明的变量,只在当前代码块有效,代码块外部不可见。局部变量

int main() {
    int m = 10;
    if (m == 10) {
        int n = 20;
        printf("%d %d\n", m, n);  // 10 20
    }
    printf("%d\n", m);  // 10
    printf("%d\n", n);  // 超出作用域,报错
    
    return 0;
}

4.变量按数据类型分类

        变量可以按数据类型来分,也可以按声明的位置来分(全局变量、局部变量)。

        按照数据类型分为:

注意1:这里列举的是C语言的常用类型,后续C语言版本还有新增的类型。

注意2:空类型:void 表示空类型(无类型)。通常应用于函数的返回值类型、函数的参数、指针类型。

注意3:在C语言中,没有字符串类型,使用字符数组表示字符串

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

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

相关文章

翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四

Streamlit从入门到精通 系列: 翻译: Streamlit从入门到精通 基础控件 一翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三 1. 5. 如何部署一个Streamlit应用 部署是将应用程序从开发…

Linux中文件名修改的多种方法

找一个不算漂亮的普通女孩,一起柴米油盐,一起日出日落,一起田间地头,一起春花冬雪!要一个不算大的小房子,生两个健康可爱的宝宝,这样就很好。。。。。。 简介: 在Linux系统中&#x…

nvcc -V显示command not found

出现这个问题,不仅是 nvcc -V会显示command not found,nvidia-smi同样也会显示 解决方法如下: 1)这里首先转换到CUDA所在位置,一般是在这个位置 cd /usr/local 2)打开、编辑环境变量的配置文件 vim ~/.bashrc …

使用NI VeriStand构建分布式系统

使用NI VeriStand构建分布式系统 - NI 概览 本文探讨了如何使用NI VeriStand来构建分布式处理和I/O系统,并提供诸多功能来帮助工程师更高效地开发强大的分布式系统。 飞机、汽车或其他工业项目中的控制系统由于需要执行监测、测试或仿真任务,其所需的计…

【MATLAB】EEMD+FFT+HHT组合算法

代码原理 EEMD(经验模态分解)FFT(快速傅里叶变换)HHT(希尔伯特-黄变换)组合算法是一种常用的信号处理和分析方法。这个组合算法包含了EEMD、FFT和HHT三个步骤,可以用于处理非线性和非平稳信号。…

IO网络2.0

思维导图 机械臂 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <myhead.h> #define SER_PORT 8888 #define SER_IP "192.168.122.68" //服务端//TCP客户端 int main(int argc, const char *argv[]) {//创建套接字…

20240115寻找两数之和

代码 class Solution:def getSumIndex(self, nums: List[int], target: int) -> List[int]:records dict()for index, value in enumerate(nums): if target - value in records: # 遍历当前元素&#xff0c;并在map中寻找是否有匹配的keyreturn [records[target- valu…

8个 Python 开发者必备的 PyCharm 插件

这8个顶级插件保证了更快、更轻松、更愉悦的开发过程。 在 PyCharm 插件列表中&#xff0c;我们发现了几个瑰宝插件&#xff0c;它们各自以独特的方式帮助开发者快速、简便、愉悦地开发。 今天我就给大家逐个介绍它们。 1. Key Promoter X 【下载链接】&#xff1a;https://…

transbigdata笔记:可视化

1 可视化轨迹 transbigdata.visualization_trip(trajdata, col[Lng, Lat, ID, Time], zoomauto, height500) 例子见transbigdata 笔记&#xff1a;官方文档案例1&#xff08;出租车GPS数据处理&#xff09;-CSDN博客 2 可视化od transbigdata.visualization_od(oddata, col…

MySQL篇—通过Clone插件进行本地克隆数据(第二篇,总共三篇)

在上一篇文章中&#xff0c;我们深入探讨了Clone技术的多种用途&#xff0c;以及使用它所需满足的前提条件。我们也详细分析了Clone存在的限制&#xff0c;并深入了解了其背后的备份原理。今天&#xff0c;我们将继续探索MySQL Clone Plugin的强大功能&#xff0c;Clone其实最重…

实践学习PaddleScience飞桨科学工具包

实践学习PaddleScience飞桨科学工具包 动手实践&#xff0c;在实践中学习&#xff01;本项目可以在AIStudio平台一键运行&#xff01;地址&#xff1a;https://aistudio.baidu.com/projectdetail/4278591 本项目第一次执行会报错&#xff0c;再执行一次即可。若碰到莫名其妙的…

JSP-概念

一、引子 很多读者可能听过JSP&#xff0c;并且知道这是一门过时的技术了。在Spring&#xff0c;SpringBoot已经成为主流的今天&#xff0c;笔者为什么还要介绍JSP的相关内容呢&#xff1f;笔者常常提到一个概念&#xff1a;理解一门技术&#xff0c;要理解这个技术为什么产生…

基于Spring Boot+vue的云上新鲜水果超市商城系统

本云上水果超市是为了提高用户查阅信息的效率和管理人员管理信息的工作效率&#xff0c;可以快速存储大量数据&#xff0c;还有信息检索功能&#xff0c;这大大的满足了用户、员工信息和管理员这三者的需求。操作简单易懂&#xff0c;合理分析各个模块的功能&#xff0c;尽可能…

电阻表示方法和电路应用

电阻 电阻的表示方法 直标法 直标法是将电阻器的类别及主要技术参数的数值直接标注在电阻器表面上 通常用3位阿拉伯数字来标注片状电阻的阻值&#xff0c;其中第1位数代表阻值的第1位有效数&#xff1b;第2位数代表阻值的第二位有效数字&#xff1b;第3位数代表阻值倍率&…

HNU-算法设计与分析-实验1

算法设计与分析实验1 计科210X 甘晴void 202108010XXX 目录 文章目录 算法设计与分析<br>实验1&#xff08;1&#xff09;分治法查找最大最小值问题描述想法代码评测算法分析 &#xff08;2&#xff09;分治法实现合并排序问题描述想法代码评测算法分析 &#xff08;3…

SpringCloud Nacos服务注册中心和配置中心

一、什么是Nacos&#xff1f; 官方介绍是这样的&#xff1a; Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您实现动态服务发现、服务配置管理、服务及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Na…

WEB 3D技术 three.js 3D贺卡(1) 搭建基本项目环境

好 今天 我也是在网上学的 带着大家一起来做个3D贺卡 首先 我们要创建一个vue3的项目、 先创建一个文件夹 装我们的项目 终端执行 vue create 项目名称 例如 我的名字想叫 greetingCards 就是 vue create greetingcards因为这个名录 里面是全部都小写的 然后 下面选择 vue3 …

全网最细RocketMQ源码四:消息存储

看完上一章之后&#xff0c;有没有很好奇&#xff0c;生产者发送完消息之后&#xff0c;server是如何存储&#xff0c;这一章节就来学习 入口 SendMessageProcessor.processRequest private CompletableFuture<RemotingCommand> asyncSendMessage(ChannelHandlerCont…

低频信号发生器

前言 最近我快期末考试了&#xff0c;有点忙着复习。没时间写文章&#xff0c;不过学会了焊接 挺开心的所以买几套。 焊得怎么样这就是我们今天故事的主角“低频信号发生器”&#xff08;由于要用到所以这是购买链接&#xff09; 好&#xff0c;故事开始&#xff1a; 如何将…

如何在Eclipse IDE中安装TestNG插件

目录 使用Eclipse Marketplace安装TestNG插件 通过输入URL安装TestNG 1.点击安装新软件 2.输入URL以安装TestNG 3.遵循正常的安装过程 4.重新启动Eclipse 在Eclipse中安装TestNG插件的视频 在这篇文章中&#xff0c;我们将介绍如何在Eclipse IDE中安装TestNG插件&#x…