【C 语言】变量本质 ( 变量修改 | 直接修改变量 | 通过内存地址间接修改变量 | 通过指针间接修改变量 )

简介: 【C 语言】变量本质 ( 变量修改 | 直接修改变量 | 通过内存地址间接修改变量 | 通过指针间接修改变量 )

文章目录

一、变量修改

1、直接修改变量

2、通过内存地址间接修改变量

3、通过指针间接修改变量





一、变量修改


访问 变量 , 就是 访问 内存空间 ;


访问 指的是 读写 内存 ;



修改变量的方式 :


直接修改 : 通过 变量 , 可以 直接 修改内存 ,

间接修改 : 通过取地址符 , 拿到变量所在内存的 地址编号 , 通过地址编号修改内存 ;


1、直接修改变量


#include <stdio.h>
int main()
{
    // 定义变量 a
    int a = 0;
    // 直接修改内存
    // 通过 内存标号 修改内存
    a = 1;
    // 打印 a 变量值 , 以及 a 的地址
    // a=1, &a=6422220
    // a 是内存地址 6422220 位置的 4 字节内存标号
    printf("a=%d, &a=%d\n", a, &a);
    return 0;
}


执行结果 :


a=1, &a=6422220

image.png



2、通过内存地址间接修改变量


#include <stdio.h>
int main()
{
    // 定义变量 a
    int a = 0;
    // 直接修改 :
    // 直接修改内存, 通过 内存标号 修改内存
    a = 1;
    // 打印 a 变量值 , 以及 a 的地址
    // a=1, &a=6422220
    // a 是内存地址 6422220 位置的 4 字节内存标号
    printf("a=%d, &a=%d\n", a, &a);
    // 间接修改 :
    // 获取 变量 a 的地址 ,
    // 直接修改该地址对应的内存空间中的数据
    *( &a ) = 2;
    printf("a=%d, &a=%d\n", a, &a);
    return 0;
}



执行结果 :


a=1, &a=6422216
a=2, &a=6422216


image.png



3、通过指针间接修改变量


#include <stdio.h>
int main()
{
    // 定义变量 a
    int a = 0;
    // 直接修改 :
    // 直接修改内存, 通过 内存标号 修改内存
    a = 1;
    // 打印 a 变量值 , 以及 a 的地址
    // a=1, &a=6422220
    // a 是内存地址 6422220 位置的 4 字节内存标号
    printf("a=%d, &a=%d\n", a, &a);
    // 间接修改 : 通过内存地址
    // 获取 变量 a 的地址 ,
    // 直接修改该地址对应的内存空间中的数据
    *( &a ) = 2;
    printf("a=%d, &a=%d\n", a, &a);
    // 间接修改2 : 通过指针
    // 将变量 a 的内存地址赋值给 p
    int *p;
    p = &a;
    // 通过修改 p 指针指向的内存 , 修改变量 a 的值
    *p = 3;
    printf("a=%d, &a=%d\n", a, &a);
    return 0;
}



执行结果 :


a=1, &a=6422216
a=2, &a=6422216
a=3, &a=6422216

image.png

目录
相关文章
|
2月前
|
存储 编译器 程序员
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
在C语言中,内存布局是程序运行时非常重要的概念。内存布局直接影响程序的性能、稳定性和安全性。理解C程序的内存布局,有助于编写更高效和可靠的代码。本文将详细介绍C程序的内存布局,包括代码段、数据段、堆、栈等部分,并提供相关的示例和应用。
68 5
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
|
2月前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
73 12
|
2月前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
84 6
|
2月前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
50 5
|
3月前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
86 6
|
3月前
|
大数据 C语言
C 语言动态内存分配 —— 灵活掌控内存资源
C语言动态内存分配使程序在运行时灵活管理内存资源,通过malloc、calloc、realloc和free等函数实现内存的申请与释放,提高内存使用效率,适应不同应用场景需求。
|
3月前
|
存储 算法 程序员
C 语言指针详解 —— 内存操控的魔法棒
《C 语言指针详解》深入浅出地讲解了指针的概念、使用方法及其在内存操作中的重要作用,被誉为程序员手中的“内存操控魔法棒”。本书适合C语言初学者及希望深化理解指针机制的开发者阅读。
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
93 1
|
3月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
576 1
|
2月前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。