- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言—指针
C语言入门教程-指针基础
2009年07月29日 11:35 本站整理 作者:佚名 用户评论(0)
关键字:
指针基础
将指针和普通变量进行比较,将有助于您理解指针。
所谓“普通变量”就是存储器中能够保存数值的一个位置。例如,当您声明变量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。
您可能关注的文档
- android Content Provider的使用.doc
- Android (服务Service).doc
- ansys提取最大应力值6.doc
- APQP产品行量先期策划[优质文档].doc
- ANDROID控件大全使用方式.doc
- ArchLinux 201005安装及基本配置.doc
- Array销售培训1.ppt
- AT名词术语.doc
- ATPCS和混合编程.doc
- AutoCAD 常用快捷键一览表.doc
- DB4403T 245-2022 青少年脊柱健康服务站点建设规范.docx
- DB4403T 321-2023 消费者权益服务站建设与管理规范.docx
- DB4401T 247-2024 建设工程保险风险管理服务规范.docx
- DB4401T 237-2023 水务信息数据规范 室外排水设施.docx
- DB4403T 128-2020 金融自助终端应用系统技术要求.docx
- DB4401T 277.1-2024 医疗设备预防性维护管理规范 第1部分:总则.docx
- DB4401T 256-2024 水晶球荔枝规范.docx
- DB4401T 155.2-2022 儿童福利机构工作规范 第2部分:教育工作规范.docx
- DB44T 2434-2023 机插水稻基质育秧技术规程.docx
- DB44T 2433-2023 珠江河网堤围险段治理技术指引.docx
文档评论(0)