第十章 指针1
- 格式:ppt
- 大小:932.00 KB
- 文档页数:56
指针1 指针是什么1.1 指针是一类数据类型的统称对于C语言来说,计算机的内存由连续的字节(byte)构成。
这些连续的字节同样被连续地编上了号码以相互区别,这个号码就是所谓的地址(Address),如图9-1所示。
图9-1 内存单元与地址指针(Pointer)是C语言中的一类数据类型的统称。
这种类型的数据专门用来存储和表示内存单元的编号,以实现通过地址得以完成的各种运算。
这样看来指针似乎就是地址,然而,事实上却并非如此。
后面将会看到,地址只是指针内涵中的一部分,甚至只是一小部分内容而远非其全部。
片面地把地址理解为指针的全部,永远学不好指针。
为了使得语言具有广泛的适用性,C语言标准允许编译器自行选择指针类型数据的长度。
在不同的编译环境下,指针数据类型的长度可能不同;甚至相同的编译环境中不同的指针数据类型,也可能有不同的大小。
为了叙述的方便,本书中的指针数据类型一律假设为具有32bit的长度。
这样并不影响对指针本质的描述,但涉及指针数据类型长度的代码(极少)在不同的编译环境中可能具有不同的结果,这点请读者加以注意。
C语言同样不规定地址这种内存单元的编号在内存中的存储格式,但在现实中目前这种编号多数是与二进制的unsigned int数据类型的存储格式一样,这是本章的另一个假定。
这意味着程序可以访问的内存的大小最大为2的32次方(4GB)。
但这绝对不意味着指针类型等同于unsigned int 数据类型,因为它们的运算规则截然不同。
1.2 指针是派生数据类型指针数据类型和数组、结构体、联合体等一样,也是一种派生数据类型(Derived Types)。
也就是说,指针数据类型是一种借助其他数据类型构造出来的数据类型。
对于任何类型,都可以构造出与之相对应的指针数据类型。
因此指针数据类型实际上有无穷多种。
没有纯粹的指针,正如同没有纯粹的数组一样。
数组是在其他数据类型的基础上构造出来的,指针也必须与其他数据类型一道才能构成自己。
指针的定义和使用
指针是一种用于存储和操作内存地址的数据类型。
在C语言中,指针是一种非常重要的概念,它可以帮助程序员更好地管理内存,提高程序的效率。
指针的定义很简单,它只是一个用来存储内存地址的变量。
我们可以使用指针来访问内存中的数据,也可以使用指针来修改内存中的数据。
指针的类型与它指向的变量的类型相同。
在C语言中,我们可以通过&运算符来获取一个变量的内存地址,将该地址存储到指针变量中。
我们也可以通过*运算符来访问指针变量所指向的内存地址中存储的数据。
指针的使用非常灵活,它可以帮助我们在程序中动态地分配和释放内存,也可以帮助我们传递数据和实现数据结构等。
但是,指针的使用也需要注意一些问题,比如指针的空指针和野指针等问题。
总之,指针是C语言中非常重要的概念,掌握了指针的定义和使用,可以帮助我们更好地编写高效、优雅的程序。
- 1 -。
指向指针的指针——彻底搞定C指针彻底搞定C指针---指向指针的指针彻底搞定C指针---指向指针的指针一( 回顾指针概念:今天我们又要学习一个叫做指向另一指针地址的指针。
让我们先回顾一下指针的概念吧~当我们程序如下申明变量:short int i;char a;short int * pi;程序会在内存某地址空间上为各变量开辟空间,如下图所示。
内存地址?6 7 8 9 10 11 12 13 14 15 ------------------------------------------------------------------------------------- … | | | | | | | | | | -------------------------------------------------------------------------------------|short int i |char a| |short int * pi|图中所示中可看出:i 变量在内存地址5的位置,占两个字节。
a变量在内存地址7的位置,占一个字节。
pi变量在内存地址9的位置,占两个字节。
(注:pi 是指针,我这里指针的宽度只有两个字节,32位系统是四个字节)接下来如下赋值:i=50;pi=&i;经过上在两句的赋值,变量的内存映象如下:内存地址?6 7 8 9 10 11 12 13 14 15 -------------------------------------------------------------------------------------- … | 50 | | | 6 | | | |--------------------------------------------------------------------------------------|short int i |char a| |short int * pi|看到没有:短整型指针变量pi的值为6,它就是I变量的内存起始地址。
第一章-C语言概论第二章-数据类型、运算符、表达式(一)第二章-数据类型、运算符、表达式(二)第二章-数据类型、运算符、表达式(三)第二章-数据类型、运算符、表达式(四)第二章-数据类型、运算符、表达式(五)第二章-数据类型、运算符、表达式(六)第二章-数据类型、运算符、表达式(七)第二章-数据类型、运算符、表达式(八)第三章-C语言程序设计初步(1)第三章-C语言程序设计初步(2)第三章-C语言程序设计初步(3)第三章-C语言程序设计初步(4)第三章-C语言程序设计初步(5)第三章-C语言程序设计初步(6)第三章-C语言程序设计初步(7)第三章-C语言程序设计初步(8)第三章-C语言程序设计初步(9)第四章-数组(1)第四章-数组(2)第四章-数组(3)第四章-数组(4)第四章-数组(5)第四章-数组(6)第四章-数组(7)第四章-数组(8)第五章-函数(1)第五章-函数(2)第五章-函数(3)第五章-函数(4)第五章-函数(5)第五章-函数(6)第五章-函数(7)第五章-函数(8)第五章-函数(9)第五章-函数(10)第六章-指针(1)第六章-指针(2)第六章-指针(3)第六章-指针(4)第六章-指针(5)第六章-指针(6)第六章-指针(7)第六章-指针(8)第七章-结构与联合(1) 第七章-结构与联合(2) 第七章-结构与联合(3) 第七章-结构与联合(4) 第七章-结构与联合(5) 第七章-结构与联合(6) 第七章-结构与联合(7) 第七章-结构与联合(8) 第八章-枚举、位运算(1) 第八章-枚举、位运算(2) 第八章-枚举、位运算(3) 第八章-枚举、位运算(4) 第八章-枚举、位运算(5) 第九章-预处理(1)第九章-预处理(2)第九章-预处理(3)第九章-预处理(4)第十章-文件(1)第十章-文件(2)第十章-文件(3)第十章-文件(4)第十章-文件(5)第十章-文件(6)第十章-文件(7)第十章-文件(8)。