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

关于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 语言的深入讨论 第一节 对函数的...指针函数:函数返回值为地址。 它定义的一般形式如下...有四个与这两种存储类别有关的说明符: auto(自动)...
第三次c语言题
第三次c语言题 - 问题 A: 十进制整数转二进制 时间限制: 1 Sec 内存限制: 2 MB 提交: 932 解决: 399 [提交][状态][讨论版] 题目描述 给出一个十进制...
【天津分中心】C语言程序设计班级讨论总结
【天津分中心】C 语言程序设计班级讨论总结此次教育...目前程序设计课程考试中存在的最大问题和实施机上...3) 好教材对教学至关重要,没有太好的教材,尤其...
《C语言程序设计》教学改革探讨
2012 年第 23 期 【摘要】从 C 语言在教学体系...课前将案 例说明资料,以及与案例有关的背景知识、...分析与讨论,找出需要解决 的问题并提出解决问题的...
面向“智能科学与技术”专业的c语言教学探讨_图文
与技术”专业的 c 语言教学变革,从该课程 对于新专业要求所面临的问题入手,以面向应用为目标,提出了教学内容改变的 细节与教学相关因素对于教学进程改变影响的讨论...
面向“智能科学与技术”专业的c语言教学探讨
与技术”专业的 c 语言教学变革,从该课程 对于新专业要求所面临的问题入手,以面向应用为目标,提出了教学内容改变的 细节与教学相关因素对于教学进程改变影响的讨论...
高职高专院校C语言教学方法探讨(李果)
重庆三峡医药高等专科学校 李果 高职高专院校 C 语言教学方法探讨 ( 重庆三峡...进行课堂讨论、 板书讲解、 结合提问,将问题层层剖析、层层深入,达到师生互动的效果...
网络新技术环境下对中职校计算机专业《C语言》教学方式...
网络新技术环境下对中职校计算机专业《C语言》教学...方式向学生展示富在趣味性的 问题和演示程序,主要...能随时了解学生的学习情况,同学之间也能相互讨论学习...
更多相关标签: