C语言3 变量

目录

1. 变量基础概念

2. 变量的说明方式

3. 变量的存储空间和地址

4. 示例程序


1. 变量基础概念

变量是程序中用于存储和表示数据的名称。在C语言中,变量具有以下基本特点和规则:

变量名由字母、数字和下划线组成,不能以数字开头。
变量名不能与C语言的关键字重名。
变量在程序运行时占据内存空间,有一个唯一的地址。

2. 变量的说明方式

在使用变量之前,必须对其进行声明,声明的一般形式如下:

<存储类型> <数据类型> <变量名>;

 存储类型:

C语言中的存储类型包括:`auto`、`register`、`static`、`extern`。

auto:默认的存储类型,变量在函数内部声明时,默认为 `auto` 类型,存储在堆栈中。

auto int x;

register:建议编译器将变量存储在CPU的寄存器中,以加快访问速度,不允许取地址。

register int count;

static:静态存储类型,用于声明静态变量,可以在函数内外使用。

  函数内的静态变量会保留其值,不会在函数调用结束时销毁。
  函数外的静态变量只能在声明它的文件中访问。

static int counter = 0;  // 函数内静态变量
static int globalVar;    // 函数外静态变量,默认初始化为0

extern:用于声明在其他文件中定义的全局变量,告诉编译器该变量在其他地方定义,不分配内存空间。

extern int globalVar;  // 声明其他文件中定义的全局变量

数据类型:

C语言中的数据类型包括基本数据类型(如 `int`、`float`、`char`)、指针类型、数组类型、结构体类型等。

int age = 30;
float pi = 3.14;
char grade = 'A';

3. 变量的存储空间和地址

变量在内存中占据一定的存储空间,其大小由其数据类型决定。
每个变量都有一个唯一的内存地址,可以通过取地址运算符 `&` 来获取变量的地址。

int num = 10;
printf("变量 num 的地址:%p\n", &num);

4. 示例程序

下面是一个结合了各种存储类型和数据类型的示例程序:

#include <stdio.h>

int globalVar = 100;  // 全局变量

void func() {
    auto int x = 5;    // 自动变量,默认存储类型为 auto
    register int y = 10;  // 寄存器变量,尝试存储在寄存器中
    static int z = 0;  // 静态变量,默认值为0,保留在内存中

    printf("Auto variable x: %d\n", x);
    printf("Register variable y: %d\n", y);
    printf("Static variable z: %d\n", z);

    z++;  // 静态变量 z 保留上次调用的值
}

int main() {
    extern int globalVar;  // 引用外部定义的全局变量

    printf("Global variable globalVar: %d\n", globalVar);

    func();  // 调用函数

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes运维工程师必备:K8s 基础面试题精编(一)

Kubernetes运维工程师必备:K8s 基础面试题精编(一) 1. 什么是Kubernetes?2. Kubernetes如何实现容器编排?3. 说出k8s的常见资源对象?4. 什么是pod?5. Deployment介绍及使用?6. statefulesets介绍及使用?7. statefulesets和deployment区别?8. 什么是调度器(Scheduler…

三菱PLC 实现PID控制温度 手搓PID指令!!!

目录 1.前言 2.PID公式的讲解 3.程序 4.硬件介绍 5.EPLAN图纸 6.成果展示 7.结语 1.前言 新手想要学习PLC的PID控制 首先会被大串的PID 公式吓到 PID公式有很多种&#xff1a;基本PID 位置式 增量式 模拟式 理想型 等等 但是 不要急 别看这么多公式 其实 将公式拆…

知识图谱驱动的深度推理:ToG算法的创新与应用

LLMs通过预训练技术在大量文本语料库上生成连贯且符合上下文的响应。然而&#xff0c;面对需要复杂知识推理的任务时&#xff0c;它们存在明显的局限性。这些问题包括对超出预训练阶段的专业知识的准确回答失败&#xff0c;以及缺乏责任性、可解释性和透明度。为了解决这些问题…

(19)夹钳(用于送货)

文章目录 前言 1 常见的抓手参数 2 参数说明 前言 Copter 支持许多不同的抓取器&#xff0c;这对送货应用和落瓶很有用。 按照下面的链接&#xff08;或侧边栏&#xff09;&#xff0c;根据你的设置了解配置信息。 Electro Permanent Magnet v3 (EPMv3)Electro Permanent M…

教育相关知识

教育的含义 教育的基本要素 教育的属性 教育的功能 教育的起源 教育的发展

软件安全性测试的工具有哪些?

软件安全性测试是确保软件系统在设计和实施过程中能够保护系统的机密性、完整性和可用性。为了进行软件安全性测试&#xff0c;有许多工具可供选择&#xff0c;这些工具可以帮助测试人员发现潜在的安全漏洞和弱点&#xff0c;从而提高软件系统的安全性。 以下是一些常用的软件安…

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术 Day2

前端框架必会的&#xff08;ajaxnode.jswebpackgit&#xff09;个人学习心得作业及bug记录 Day2 你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner &#x1f339; 如果本…

从RL的专业角度解惑 instruct GPT的目标函数

作为早期chatGPT背后的核心技术&#xff0c;instruct GPT一直被业界奉为里程碑式的著作。但是这篇论文关于RL的部分确写的非常模糊&#xff0c;几乎一笔带过。当我们去仔细审查它的目标函数的时候&#xff0c;心中不免有诸多困惑。特别是作者提到用PPO来做强化学习&#xff0c;…

Jenkins 常用的 Linux 指令

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

法国工程师IMT联盟 密码学及其应用 2022年期末考试

1 密码学 1.1 问题1 对称加密&#xff08;密钥加密) 1.1.1 问题 对称密钥la cryptographie symtrique和公开密钥有哪些优缺点&#xff1f; 1.1.1.1 对称加密&#xff08;密钥加密)的优缺点 1.1.1.1.1 优点 加解密速度快encrypt and decrypt&#xff1a;对称加密算法通常基于…

不锈钢焊条A022

说明&#xff1a;A022是钛钙型药皮的不锈钢焊条。交直流两用&#xff0c;操作性能良好。熔敷金属有良好的耐热、耐腐蚀及抗裂性能。 用途&#xff1a;用于焊接尿素、合成纤维等设备及相同类型的不锈钢结构&#xff0c;也可用于焊后不能进行热处理的铬不锈钢以及复合钢和异种钢等…

使用 pgbadger 自动填充准备好的语句占位符#PG培训

问题 当某些应用程序使用扩展查询协议/准备好的语句来查询 Postgres&#xff08;出于性能原因&#xff0c;您通常应该这样做&#xff09;并由于某种原因获得查询错误或只是超过“慢查询日志”阈值&#xff08;log_min_duration_statement配置参数&#xff09;时&#xff0c;您…

Kafka(二)Producer第一篇

一&#xff0c;Client开发 生产逻辑需要具备以下几个 步骤&#xff1a; &#xff08;1&#xff09;配置生产者客户端参数及创建相应的生产者实例。 &#xff08;2&#xff09;构建待发送的消息。 &#xff08;3&#xff09;发送消息。 &#xff08;4&#xff09;关闭生产者实例…

字节码编程javassist之打印方法耗时和入参

写在前面 本文看下如何实现打印方法耗时和入参。 1&#xff1a;程序 需要增强的类&#xff1a; public class ApiTest1 {public Integer strToInt(String str01, String str02) {return Integer.parseInt(str01);}}插桩类 package com.dahuyou.javassist.huohuo.aa;import…

基于 V7 FPGA 的4X 100G 光纤加速卡,可应用于基于服务器的光纤通道数据采集、数据传输等场景

4个100G QSFP28 光纤通道PCIE x16 主机接口&#xff0c;支持xdma&#xff0c;支持SG DMA光纤通道支持Aurora等协议标准&#xff0c;最高支持25Gbps/lane2组独立的DDR4 SDRAM 缓存&#xff0c;工作时钟频率1200MHz多路数字离散IO接口高性能时钟管理单元 功能框图 一款基于PCIE总…

easyexcel使用小结-未完待续

官网&#xff1a;https://easyexcel.opensource.alibaba.com/docs/current/ <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.1</version></dependency>一、读 1.1简单读 Getter…

Vue 与 OpenAI 接口交互实战:发送请求的全流程解析(一)

前言 本文讲解使用vue去搭建一个项目&#xff0c;然后向OpenAI发送请求&#xff0c;并获取数据 文章分为两篇书写&#xff0c;本篇文章侧重于书写API的封装与调用&#xff0c;第二篇文章侧重于页面逻辑的处理 接下来就让我们开始吧! 调用OpenAI的本质是什么&#xff1f; 本…

基于AD8232的心电图套件的测试

基于AD8232的心电图套件的测试 1、测试设备2、电源的选择3、 用于测试心电图套件的模拟心电图电路基本4017B的电路基于multisim的电路仿真基于STM32F103RCT6 参考测试数据 1、测试设备 1、AD8232心电模块 2、手持示波器 3、心电信号模拟发生器 4、NI multisim 14.3 5、实物待补…

关于振动盘正反料下料逻辑编写

写在前文 借鉴某个程序的逻辑套路写的 1.就是第一个料是正方向&#xff0c;第二个料是反方向。 (* 基础逻辑应该都差不多&#xff0c;这个是一个振动盘&#xff0c;振动盘的末端是一个上下对射的感应器&#xff0c;这个感应器的作用是对射感应到物料的到位信号&#xff0c;末端…

java LogUtil输出日志打日志的class文件内具体方法和行号

最近琢磨怎么把日志打的更清晰&#xff0c;方便查找问题&#xff0c;又不需要在每个class内都创建Logger对象&#xff1b;利用堆栈的方向顺序拿到日志的class问题。看效果&#xff0c;直接上代码。 1、demo test 2、输出效果 3、完整的LogUtil文件 import org.jetbrains.anno…