水滴石穿C语言之指针、数组和函数
5页1、基本解释1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。问题:指针与数组听说char a与char *a是一致的,是不是这样呢?答案与分析:指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。请看以下的例子:char a = Hi, pig!;char *p = Hi, pig!;上述两个变量的内存布局分别如下:数组a需要在内存中占用8个字节的空间,这段内存区通过名字a来标志。指针p则需要4个字节的空间来存放地址,这4个字节用名字p来标志。其中存放的地址几乎可以指向任何地方,也可以哪里都不指,即空
2、指针。目前这个p指向某地连续的8个字节,即字符串“Hi, pig!”。另外,例如:对于a2和p2,二者都返回字符i,但是编译器产生的执行代码却不一样。对于a2,执行代码是从a的位置开始,向后移动2两个字节,然后取出其中的字符。对于p2,执行代码是从p的位置取出一个地址,在其上加2,然后取出对应内存中的字符。问题:数组指针为什么在有些时候我们需要定义指向数组而不是指向数组元素的指针?如何定义?答案与分析:使用指针,目的是用来保存某个元素的地址,从而来利用指针独有的优点,那么在元素需要是数组的情况下,就理所当然要用到指向数组的指针,比如在高维需要动态生成情况下的多维数组。定义例子如下: int (*pElement)2。下面是一个例子:int array23 = 1,2,3,4,5,6;int (*pa)3; /定义一个指向数组的指针pa = &array0; / &符号能够体现pa的含义,表示是指向数组的指针printf (%d, (*pa)0); /将打印array00,即1pa+; / 猜一猜,它指向谁?array1?对了!printf (%d, (*pa)0); / 将打印arra
《水滴石穿C语言之指针、数组和函数》由会员夏**分享,可在线阅读,更多相关《水滴石穿C语言之指针、数组和函数》请在金锄头文库上搜索。
幼儿园大班教师个人年终工作总结(4篇).doc
鞍山光伏照明设备项目建议书_参考模板
货物办理与仓储质量管理体系专业审核作业指导书
《洁净室施工及验收规范》
患者身份识别制度及流程
2022年客服员工转正述职报告范文
2022年小学四年级班级读书计划
婚前婚后财产债务协议范本(3篇).doc
重生与顺势的生存观
生日经典祝福短信
橡胶模具项目建议书模板-备案立项
银行委托贷款合同示范文本
2023年注册会计师财务成本管理作业成本计算模拟试卷及答案与解析
XX花园公开发售实施方案精
烘焙行业实习报告
电焊机验收表
煤矿机电管理标准化建设与事故预防管理
微笑教学设计
建筑设计防火规范快速记忆口诀
2020高中英语人教版 选修10教师用书:Unit 1 阶段质量检测 B卷 能力素养提升 Word版含答案
2023-01-17 6页
2023-02-01 2页
2023-11-06 2页
2022-08-06 16页
2023-02-27 8页
2023-07-22 5页
2023-12-29 7页
2023-02-07 4页
2023-09-11 4页
2023-07-06 2页