C语言入门教程-指针基础
[09-12 13:08:26] 来源:http://www.88dzw.com 电路基础 阅读:8206次
文章摘要:指针基础将指针和普通变量进行比较,将有助于您理解指针。 所谓“普通变量”就是存储器中能够保存数值的一个位置。例如,当您声明变量i为一个整数时,四个字节的存储空间就为它预留出来了。程序中用i表示那个预留出的位置。在机器的层面上看,这个位置具有一个内存地址。从这个地址开始的四个字节对您(程序员)来说就是变量i,它们可以保存一个整数。 指针就不同了。指针是指向另一个变量的变量。意思是一个指针保存的是另一个变量的内存地址。换句话说,指针保存的并不是普通意义上的数值,而是另一个变量的地址值。一个指针保存了另一个变量的地址值,就说这个指针“指向”了那个变量。 因为指针保存了地址而不是数值,所以它有两个部分
C语言入门教程-指针基础,标签:电子电路基础,模拟电路基础,http://www.88dzw.com指针基础
将指针和普通变量进行比较,将有助于您理解指针。
所谓“普通变量”就是存储器中能够保存数值的一个位置。例如,当您声明变量i为一个整数时,四个字节的存储空间就为它预留出来了。程序中用i表示那个预留出的位置。在机器的层面上看,这个位置具有一个内存地址。从这个地址开始的四个字节对您(程序员)来说就是变量i,它们可以保存一个整数。
指针就不同了。指针是指向另一个变量的变量。意思是一个指针保存的是另一个变量的内存地址。换句话说,指针保存的并不是普通意义上的数值,而是另一个变量的地址值。一个指针保存了另一个变量的地址值,就说这个指针“指向”了那个变量。
因为指针保存了地址而不是数值,所以它有两个部分。指针本身保存一个地址,这个地址又指向一个数值,即:指针本身和被指向的数值两部分。这个概念开始可能有些不好理解,而一旦掌握将是极有裨益的。
下面的例子显示了一个典型的指针:
#include
int main()
{int i,j;int *p; /* 指向整数的指针 */
p=&i
*p=5;j=i;
printf("%d %d %dn", i, j, *p);return 0;}
程序的第一行声明了两个普通的整型变量i和j。int *p这行声明了一个名为p的指针。它告诉编译器,所声明的变量p是一个指向整数的指针。*表示声明的是指针而不是普通变量。您可以创建任何类型的指针:float,结构体,char等等。只要用*指出您要的是指针而非普通变量即可。
p=&i 这行您肯定还没见过。C语言中, 这个表达式的意思就是“将i的地址赋值给p。”这条语句一经执行,p就“指向”了i。而此前p的内容是一个未知的随机地址,直接使用的话很可能会导致程序错误或类似的程序崩溃。
画图是观察程序运行过程的好方法。声明i、j和p后,程序的状态是这个样子:
上图中的三个变量i、j和p都被声明过了,但还没有初始化。所以将两个整型变量以含有问号的方框表示——程序执行到这一步时它们的内容可以是任何值。将指针以圆圈表示,以区别于保存数值的一般变量,随意的几个箭头表示它现在可能指向任何一个位置。
执行了p=&i这行后,p被初始化为指向i,像这样:
p指向i之后,i代表的内存位置就有了两个名字。它除了叫做i,现在还叫做*p。这就是为什么说C中的指针变量有两个部分:p是容纳地址的位置,而*p是地址指向的位置。因此*p=5的意思是将p指向的位置的值设为5,像这样:
因为*p和i代表同一位置,i的值自然也就变成了5。于是j=i;将j也设为5,printf语句的输出就是5 5 5。
指针的主要特性是它天生具有两部分。指针本身除了保存地址,还指向某种类型的值,而这个值的地址正是指针保存的那个。在上面的例子中,指针本身是p,它指向的值是*p。
- 上一篇:C语言入门教程-内存地址
《C语言入门教程-指针基础》相关文章
- › C语言入门教程-二进制文件
- › C语言入门教程-打开文本文件
- › C语言入门教程-读取文本文件
- › C语言入门教程-指针
- › C语言入门教程-为什么要用指针?
- › C语言入门教程-指针基础
- 在百度中搜索相关文章:C语言入门教程-指针基础
- 在谷歌中搜索相关文章:C语言入门教程-指针基础
- 在soso中搜索相关文章:C语言入门教程-指针基础
- 在搜狗中搜索相关文章:C语言入门教程-指针基础
编辑推荐
- · 什么是系统仿真
- · 什么是CPCI
- · 英特尔 Parallel Composer入门
- · 什么是支持数据库,什么是中宏数据库
- · 什么是数据交换技术
- · 什么是内部数据传输率
- · 什么是空间数据交换中心
- · 什么是差异备份
- · 什么是备份集
- · 什么是映像备份
- · IGBT模块
- · 什么是24脉波整流变压器
- · 自动变速器不能强制降挡故障原因、诊断与排
- · 什么是MD机
- · 中心频率,什么是中心频率
- · 功率单位mw和dbm的换算表
- · 中值滤波模块设计思路
- · 反馈振荡器的原理
- · 气体激光器简介
- · 数制与进位记数法