C指针详解:内存地址与变量关系透彻解析

需积分: 3 2 下载量 92 浏览量 更新于2024-07-28 1 收藏 88KB DOC 举报
在C语言中,理解指针的运作核心首先得掌握变量的内存实质。变量在C语言中的存储实质类似于电影院的座位,它们被赋予特定的位置或地址来存放数据。内存是以字节为单位编址的,每个内存地址对应一个字节。例如,当声明`int i;`和`char a;`时,系统会在内存中为整型变量i分配4字节(在32位系统中,int通常是4字节宽)的空间,字符型变量a则占用1字节。 声明变量不仅仅是给它们起名字,更是为它们在内存中预留了空间。在内存中,变量的表示形式如下: 内存地址 → 678910111213 ----------------------------------- | | i | | a | | | | ----------------------------------- 这里的'i'占据了内存起始地址为6的4字节区域,而'a'则位于地址10处,分别对应它们各自的类型。 赋值操作是将数据写入到这些预留的内存位置。比如`i = 30`将整数值30存储在i所对应的内存单元,而`a = 't'`则是将字符't'存入a的存储空间。这样的过程体现了指针的核心概念,即将值与内存地址关联起来,通过指针可以间接访问和操作内存中的数据。 在实际编程中,指针就是内存地址的别名,它存储的是另一个变量的内存地址,允许程序员直接操作内存数据,这对于动态内存管理、函数参数传递和数组操作等高级特性至关重要。理解了变量的内存布局和指针的工作原理,能帮助开发者更有效地编写高效且安全的C代码。接下来的学习中,将深入探讨指针的各种类型、运算以及如何正确处理指针,包括常量指针、指向数组的指针、指针算术运算等内容,这些都是C程序设计中的关键部分。
2010-08-24 上传
目 录 前言 ..................................................................................................................................................1 目 录 ................................................................................................................................................2 修订说明...........................................................................................................................................3 A类:规范化............................................................................................................................3 B类:更正................................................................................................................................3 C类:明晰化............................................................................................................................4 D类:编译器............................................................................................................................4 第壹篇 变量的内存实质.................................................................................................................5 1.先来理解C语言中变量的实质..........................................................................................5 2.赋值给变量.........................................................................................................................6 3.变量在哪里?(即我想知道变量的地址).....................................................................7 第贰篇 指针是什么?.....................................................................................................................8 1.指针是什么东西.................................................................................................................8 第叁篇 指针与数组名...................................................................................................................11 1. 通过数组名访问数组元素................................................................................................11 2.通过指针访问数组元素...................................................................................................11 3.数组名与指针变量的区别...............................................................................................12 4.声明指针常量...................................................................................................................13 第肆篇const int *pi与int *const pi的区别...............................................................14 1. 从const int i 说起...................................................................................................14 2. const int *pi的语义..............................................................................................15 3. 再看int *const pi.....................................................................................................16 4.补充三种情况...................................................................................................................18 第伍篇 函数参数的传递...............................................................................................................20 1.三道考题...........................................................................................................................20 2. 函数参数传递方式之一:值传递....................................................................................23 3. 函数参数传递方式之二:地址传递................................................................................26 4. 函数参数传递方式之三:引用传递................................................................................27 第陆篇 指向另一指针的指针.......................................................................................................30 1. 回顾指针概念....................................................................................................................30 2.指针的地址与指向另一指针地址的指针.......................................................................31 3. 一个应用实例....................................................................................................................32 第柒篇 函数名与函数指针...........................................................................................................37 1. 通常的函数调用................................................................................................................37 2.函数指针变量的声明.......................................................................................................38 3.通过函数指针变量调用函数...........................................................................................38 4.调用函数的其它书写格式...............................................................................................39 5.定义某一函数的指针类型...............................................................................................42 6. 函数指针作为某个函数的参数........................................................................................44