当前位置:
文档之家› 于C语言中使用指针作为函数参数的问题
于C语言中使用指针作为函数参数的问题
,,不再指向sll",实参s廿仍是空指针,当函数返回后,程序
惰可能崩溃。
return;
l
,,主函数
char‘slr=-NULL; im 4ip.i=lO; ip:&i;
Myfunc((char+)&slx,ip);
锵sir的地址作为形参传递给子函数,则在子函数中字 腑指针str_buf指向实参s廿
free(str); ,,虽然在主函数中未对Str分配内存,但是Sir已经指向了 垢自态分配的内存单元,因此在程序退出时需要释放这部 //分内存单元。
獬m I
。
l
图2子函数调用前后各变量在内存中的位置
作为形参的使用比初始化的指针变量作为形参的使用要复杂。 虽然例l和例2显示的内容是相同的,但完成的工作是不相 同的。首先,通过形参传递的对象是不同的,一个指向的特 定位置的内存单元,一个则指向指针变量;其次,在第一段 代码子函数中的语句只完成了对相应内存单元内容的刷新, 而例第二段代码子函数中的语句不仅仅完成了相应内存单元 内容的刷新,还通过修改主函数中指针变量所指向的内存位 置,完成了字符串地址的传递;最后,第一段代码中动态内 存的分配和释放都是在一个函数体内,而第二段代码中动态 内存的分配和释放在不同的函数体内,因此更需要特别注意, 要避免使用动态分配内存后,未及时释放的情况发生。
(下转到30页)
万方数据
一13一
电脑编程技巧与维护
7 结语 在用VB6.0开发的特种设备GIS远程监控系统中,利用
MapX控件显示地图,实现了在地图上添加和显示设备的标 记,随时可调出该单位重要承压类设备的详细信息,便于进 行远程实时监控。
参考文献 【1】刘红军.自动部署和备份sQL Server数据库的实现【J】.
Abstract:The discussion on C language’S pointer to be used as a parameter in functions is conducted.The situation which uninitialized pointers to be passed as parameters is throughly analyzed and related samples are siven. Key words:C Language;Pointer;Function parameter
( sprintf(str_buf,“Data%dkn”,1); 胪是取指针指向的内存单元中的内容
return;
l
,,主函数 char*str=(char+)malloc(30); //9,内存中分配出30个 ,,连续的字符类型存储单元,将存储单元的首地址赋给s仃。 int 4ip,i=lO; ip=&i;删每整型变量i的地址赋给ip Myfunc(str,ip); free(str); 程序运行后会显示:
8.期刊论文 杨莉 C语言指针的研究与运用 -中小企业管理与科技2008(23)
指针是C语言的精髓部分,也是C语言的重要特色.本文从指针的基本概念出发,结合具体实例对指针的类型进行了分析,并对指针在实际应用中常出现 的问题进行了归类总结,希望对初学者理解"指针"这一重要概念有所帮助.
9.期刊论文 李霞 C语言指针的应用 -科技创新导报2009(4)
SOFTWARE DEVELOPMENT AND DESIGN
软件开发与设计
关于C语言中使用指针作为函数参数的问题
徐辉。王安民 (第二炮兵装备研究院第三研究所,北京100085) 摘要:通过实例针对C语言指针作为函数参数的用法进行讨论,尤其对未初始化指针作为函数参数的情况进行 了详细讨论出相关的实例。 关键词:C语言;指针;函数参数
,,sizeof(buO是取得字符指针变量占用的字节数,由于操作 ,,系统不同,不同数据类型的变量占用的字节数也不相同。
str_buf【i】=cp【i】; Ilstr_buf【i】中存放的是指针s廿所包含的内存地址,cp[i】 ,,中存放的是字符串的首地址
//str_buf=buf;
,,此处不可用这条语句,因为这条语句只是将buf包含的字 ,,符串地址赋给了str_buf,str_buf将指向字符串首地址,
相似文献(10条)
1.期刊论文 王恒滨.闫东升 关于C语言指针定义的讨论 -辽宁财专学报2004,6(2)
在教学和实践中发现,C语言指针定义的信息量不足,难于解释指针使用的许多方面.本文大胆地剖析了已有的定义,从中找出问题所在,并试图加以改 进.还结合实例给出了"拟构"概念,较好地说明了相关知识尤其是指针与数组的关系.
3.期刊论文 陈建辉 C语言指针探讨 -莆田高等专科学校学报2001,8(4)
结合实例从五个方面对C语言指针进行分析和探讨:阐述C语言指针的概念和正确使用指针变量,区分指针变量和指针的指向变量的含义和用法;通过判 断变量与运算符*,[]和()的结合顺序来确定变量的数据类型及指向变量或成员变量的类型;指出指针与数组的关系,通过指针来访问教组元素和采用下标 法数组元素的等价关系;作为函数参数的指针变量,可以改变所指向的主调函数变量的值;指针可以实现动态存储分配,用来实现对链表的创建、插入和删 除等操作.
1 引言 正确地理解和使用指针是成功地进行C语言程序设计的
关键。指针不仅提供了函数修改调用变元的方法,还支持动 态分配内存,因此可以改善某些例程的效率。但同时,指针 也是C语言最强也是最危险的特征之一,未初始化的指针 (包含无效值的指针)可以使系统崩溃。因此在很多C语言的 参考书中,都要求初始化的指针作为函数形参,即形参指向 一个特定数据类型的变量。文中针对未初始化的指针作为函 数形参的使用问题进行了探讨。 2 初始化指针作为函数参数
潍坊学院学报,2008,(04).
【2】张锦明,付永恒.基于GPS/GPRS的位置信息服务系统的 设计与实现叨.测绘通报,2007,(11).
【3】吴贞东,陈麟.基于GPRS和GIS的路灯监控系统【J】. 微计算机信息,2007,(28).
作者简介 孙丽红,女(1973-),助教,研究方向:面向对象的软件开发。
(上垮第13页)狮fI擒c一增奠。 脚…_‰一用詹
{
内存馘
一存-艟一一…1。…w
char‘buf=(char+)malloc(30);
char‘cp=(char+)&buf;
锵字符指针变量buf的地址赋给指针cp,这里需要将其强 删转换成字符指针的类型,便于对str_buf逐个字节赋值。
inti;
sprintf(buf,“Data%d\n”,巧); for(i=0;i<sizeof CouO;i*)
作者: 作者单位: 刊名:
英文刊名: 年,卷(期): 引用次数:
徐辉, 王安民 第二炮兵装备研究院第三研究所,北京,100085
电脑编程技巧与维护 COMPUTER PROGRAMMING SKILLS & MAINTENANCE 2009,(18) 0次
参考文献(3条) 1.谭浩强.C语言设计.北京:清华大学出版社,2001. 2.钱能.C++程序设计教程.北京:清华大学出版社,2001. 3.徐金吾,杨德斌,徐科.TURBO C实用大全.北京:机械工业出版社,1996.
指针是C语言的低级语言特性.使用指针程序员可以按地址操作计算机内存,灵活实现一些特定功能;使用指针可以方便地表达复杂的数据结构,使程序 简洁、高效、紧凑,指针是整个C语言课程的重点以及后续课程的重要基础.指针是C语言教学难点,在教学中采取适当的策略和方法完全可以取得较为满意 的效果.
6.期刊论文 刘丽梅 复习C语言应注意的几个方面(之四)--针对CCT C语言指针部分 -承德职业学院学报2005,10(3)
指针是包含了内存地址的变量,这个地址是内存中某一 个特定数据类型变量的位置,即地址。将指针作为函数的形 参,是将指针指向的这个变量的位置传递给函数,供函数内 部模块的调用,而作为实参的指针并没有参与函数的调用。
void iyfunc(char 4str_buf,int掌j) ,,显示一个整型变量的值的子函数
工业出版社,1996.
Myhmc调用后s仃被指向了Mflunc子函数中动态分配的内存 单元,因此能够正常显示出字符串的内容。 4 结语
作者简介 徐辉,男(1982一),助理工程师,研究方向:弹道仿真。
通过对上述实例的比较可以看出:未初始化的指针变量
王安民,高级工程师。
一30一
万方数据
关于C语言中使用指针作为函数参数的问题
指针是C语言的一个重要概念,也是C语言的一个重要特色.但是指针概念比较抽象.使用又相对比较灵活,正确应用指针变成了程序设计的一个难点,本 文就指针的应用从各方面作一介绍.帮助学习者加深理解.
10.期刊论文 李振涛.赵鹏.杨树元.Li Zhen-tao.ZHAO Peng.YANG Shu-yuan C语言多维数组与指针的探讨 -长春师
本文主要针对CCT中的C语言部分,在复习时应该注意的几个方面,以讲、例结合的方式作了详细的论述.
7.期刊论文 王丕景 C语言“指针”教学经验谈 -太原理工大学学报(社会科学版)2001,19(2)
在C语言的教学中,指针概念的教学一直就是C语言的教学重点和难点,指针已成为学习和掌握C语言的一大障碍.从硬件角度、图示方法及举例选题三 个方面介绍了C语言指针教学中的体会.
Data 10
本文收稿日期:2009—7-6
Myfunc函数调用前和调用时的各变量在内存中的分配如 图l所示。
■一舯c调用靛
管=:一
调用耐
艮M昏 位置
从图l中可以看出传递给MyfllIlc子函数的是实参指针sh 和IP的内容,即SⅡ指向的字符串首地址,IP指向的整型变量 低字节的地址。在子函数调用过程中Sir和IP的内容并不会发 生改变,但子函数会改写str指向的字符串单元中的内容。 3未初始化指针作为函数形参