当前位置:首页 >> 工学 >>

关于C语言地址问题的在讨论


先看一个例子: #include<stdio.h> void point(char *p){ p+=3; } void point2(char *p){ *p+=3; }

void main(){ char s[]={'a','b','c','d','e'}; point (s); printf("调用 pont()结果为:%c\n",*s); point2(s); printf("调用 pont2()结果为:%c\n",*s); } 运行结果如下:

首先是 ponit()函数,该函数的确是传址调用,但我们看执行的结 果却令人大失所望, 因为我们所期望的结果与我们的实际操作大 相径庭,究其原因,就在于 point()函数的执行即 p+=3; 我们

知道 p 是一个指针变量其存放的值肯定为某个变量的地址即从 主函数中传递过去的地址值 s,于是我们可以用图以来说明这个 过程。但是 point()函数明显挂羊头卖狗肉,它执行了 P+=3; 一个存放地址值的变量加三?是何道理?
Voind point (char *p) P+=3;

最致命的一是 p 与 *p 肯定不在同一个内存单元中。

主 函 数 void main() Pontt(s) ;

图一;

Void point2(c har *p) *p+=3;

Point2(* s)

而在 void point2()中的操作是*p+=3; 是将 p 所指的内存单元的值加三,即 s 加三;

由此得出结论,要想使传址改变主函数中的值,必须使得被调用 的函数与主函数中的参数共享一段内存单元。


赞助商链接
相关文章:
C语言课堂教学中的趣味性探讨
C语言课堂教学中的趣味性探讨 本文针对 C 语言教学中普遍存在的“不好教, 不好学”现象, 分析了问题存在 的原因, 讨论了如何在课堂教学中引入激励机制,指出教师...
C语言第二次小班讨论题
如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 C语言第二次小班讨论题 小组讨论题小组讨论题隐藏>> (以下是我选的 ...
C语言程序设计和调试的探讨
计的案例教学方法,文献[2]讨论C 语言程序设计中关于自增和自减运算符的理...值得注意的两个问题: (1) 当一个变量出现在一个函数的多个参数中时 ,不能...
第十章 对C语言的深入讨论
第十章 对 C 语言的深入讨论 第一节 对函数的...指针函数:函数返回值为地址。 它定义的一般形式如下...有四个与这两种存储类别有关的说明符: auto(自动)...
《C语言程序设计》教学改革探讨
2012 年第 23 期 【摘要】从 C 语言在教学体系...课前将案 例说明资料,以及与案例有关的背景知识、...分析与讨论,找出需要解决 的问题并提出解决问题的...
C语言教学中“为用而学,交叉复现”分组讨论模式的探索
C语言教学中“为用而学,交叉复现”分组讨论模式的探索 - 龙源期刊网 http://www.qikan.com.cn C 语言教学中“为用而学,交叉复现”分组讨 论模式的探索 ...
《C语言程序设计》课程教学的探讨
在《C 语言程序设计》的教学中教师方面的问题主要包括: ①课程的知识点较多, ...课外讨论机制,教师定期发布讨论主题,学生以小组为单位 进行准备,然后通过专题讨论...
调试技术在C语言程序设计教学中的作用探讨
调试技术在C语言程序设计教学中的作用探讨 - 龙源期刊网 http://www.qikan.com.cn 调试技术在 C 语言程序设计教学中的作用 探讨 作者:陈圣磊 刘林源 来源:《...
C语言中的变量在内存中的存储情况探讨
C语言中的变量在内存中的存储情况探讨 - 龙源期刊网 http://www.qikan.com.cn C 语言中的变量在内存中的存储情况探讨 作者:孙静霞 来源:《计算机时代》2015 ...
单片机到嵌入式之路序列之一:简单的讨论一下C语言知识
单片机到嵌入式之路序列之一:简单的讨论一下C语言知识_语文_初中教育_教育专区...定义一个 8 位的寄存器(0xF0 是寄存器的地址): #define REG 0xDE 1)对...
更多相关标签: