开篇:润墨网以专业的文秘视角,为您筛选了十篇范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要: “指针”是C语言的精髓,是C语言区独有的功能,在C语言的程序设计过程中起着不可或缺的作用。只有学好了指针才算掌握了C语言,同时指针也是C语言最危险的特性,如果使用不当,则很容易指到意想不到的地方,产生错误很难发现。应该特别注意指针教学,高效应用指针,发挥C语言的优势。
关键词: C语言 指针 函数 数组
“指针”是C语言中广泛使用的一种数据类型,运用指针编程是C语言最主要的风格之一。利用指针可以表示各种数据结构,它与函数、数组的使用和传递数据有密切联系,能方便地访问数组,还能像汇编语言一样处理内存地址,从而编出精致而高效的程序。指针极大地强化了C语言的功能。学习指针是学习C语言最重要的一环,能否正确理解和使用指针是判断是否掌握了C语言的重要标志。但是指针也是C语言最危险的特性,如果使用不当,则很容易指到意想不到的地方,产生错误也很难发现。因此,对于初学者来说,应特别注意指针的应用。怎样才能应用好指针呢?下面笔者以在计算机C语言教学中的体会与大家进行探讨。
一、理解指针
在C语言中任何数据只要定义了,在内存中就是有一定的存储单元的。存储单元就是变量在计算机中的存储地址,指针就是用来表示这些地址的变量。所以简单地说,指针就是地址,变量的指针就是变量的地址,这里还涉及一个概念就是指针变量,所谓指针变量就是用来存放指针(地址)的变量。例如:int a;假设a的地址是2000,而2000又存储在变量point中,那么变量point就是指针的变量简称指针变量,a就是指针变量所指向的变量。很多初学者都存在这样的误区:既然指针放的是地址,而2000正好是变量a的地址,那么对于指针point就可以这样赋值:point=2000,这是错误的,这里的2000表示的不是地址是一个整型数据。所以对于指针变量的赋值只能用取地址运算符“&”进行赋值即:point=&a;&a即为a的地址。
二、指针与函数
指针作为C语言的精华有很多用途,除具有一般的功能外,其中具体特殊功能的应用总结起来有三个方面:一是用于在函数中可以返回多个值;二是可以实现动态调用函数;三是实现数组的动态定义。其中,普通变量作为函数的参数,传递的是变量的值,因此只能带回一个返回值,但在有些场合需要返回多个值,这就必须用到指针做函数的参数,因为指针作为参数传递的是地址,让实参和形参指向同一个变量的地址,N个形参所指向的变量的值改变了,N个实参的值也自然改变了,从而实现了带回多个返回值。这里举个例子,编写一个函数实现两个数从小到大输出。这个程序需要子函数实现两个数的交换,把交换后的两个值通过指针传回主函数输出,传回来的是两个值。所以普通变量做函数的参数是无法实现的,只能用指针作为函数的参数。具体实现:
子函数实现交换:
指针简介
指针是C语言的一个最重要的特征,它提供了一种统一的方法,使其能访问远程的数据结构。但对C语言初学者而言,在编程过程中熟练的使用指针并不能像使用int型变量一样地轻松愉快,容易上手,往往是不得其精髓。我们知道,不论什么时候,运行一个程序A,首先都是操作系统自身的加载器把A装入内存,然后CPU才能执行。所以A程序的所有要素都会驻留在内存的某个位置。
下面我们看一段示例程序。
#include
intcmp(int first, int second)
{
return ( first > second ? first : second );
}
摘 要: C语言为计算机高级语言中基础语言,包含最基本的语言特性。并能够直接访问和系统底层接口。而C语言的精髓知识为指针,同时也是最难理解,应用最广,最重要的C语言知识,将深入浅出的分析指针,从根本了解指针。
关键词: C语言;指针;应用
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2013)0120059-02
1 C语言指针重要性
指针是C语言中最重要的概念之一,运用好指针不就能够很方便灵活的处理好复杂的程序的设计,依靠指针的特性能够完成其他高级语言所无法完成的功能,在有些场合运用指针的灵活性是解决问题的唯一方式。如目前很多远程攻击都利用内存的缓冲区溢出来攻击,C语言本身特点不进行变量边界检测,人为介入检查,不仅工作量加大,同时很容易犯错,而所采取的检测库函数,同时也是安全漏洞,在这种情况下,利用指针分析,它可以本质上在C语言程序编译过程中,完成对程序的静态分析,完成对程序的变量边界检查,这种方式只有指针能够完成。指针同时在程序切片调试、自动化硬件技术有着广泛的应用。
同时指针也是最难掌握的一部份内容,指针的难以理解和应用中潜在危险,如应用指针不小心,也会使得整个程序奔溃。所以,指针在C语言占有非常重要的位置,在C语言的程序设计中应用非常广泛。
2 指针在C语言中应用
实际上,指针为变量地址,用于存储地址,程序设计在跟数据类型定义变量,同时为其分配一定大小的存储空间,同时建立变量名与地址空间关联。而指针变量简称指针,它是一种特殊的变量。它的特殊性在于:首先系统为变量,其所存储的内容为地址,而不是常用变量所存储的地址,它只能是整数值,具有一定的含义和运算规则所形成的整型。其次指针的类型指的不是存储数值的类型,而是指针变量的类型。在C语言中,指针的类包括整型、字符型、实型、数组型、结构型、联合型和枚举型等构造类型,它还可以指向函数、文件和指针。
摘要:C语言是一门基础的程序设计语言,在程序设计教学中占有重要的地位。在C语言中,较难理解的就是指针。本文试图通过论述指针的定义、分类、运算以及3殊的用途,让大家能较清晰的认识指针的本质。可以预见的是只有深入的掌握的了指针才能真正的掌握了C语言。通过深入的应用指针,C语言必定能够应用于更广泛领域。
关键词:C语言;指针;程序设计
中图分类号:TP311.1 文献标识码:A文章编号:1007-9599 (2010) 05-0000-01
C Language Pointer
Li Peng
(Tianjin Polytechnic University,Tianjin300160,China)
Abstract:C-language is a programming language,teaching in the program design plays an important role.In the C language,difficult to understand is the pointer.This article intends to discuss the indicators of definitions,classifications,operations and 3 special purpose,so that we can more clearly understand the nature pointer.Can be expected that only a thorough grasp of the pointer can truly grasp of the C language. Applications through in-depth pointers,C language will be used more widely in the field.
Keywords:C language;Pointer;Programming
摘要:首先介绍了C语言中指针的有关概念,然后运用指针实现了一个链表程序,针对初学者在实现该程序时常见的一些错误,分析了错误出现的原因,并对这些错误进行了更正。
关键词:C语言;程序;指针;链表
中图分类号:TP312文献标识码:A文章编号:1009-3044(2010)01-244-03
Application of Pointer in C Language
ZHANG Bin-lian
(School of Information Management and Engineering, Jishou University, Zhangjiajie 427000, China)
Abstract: First introduced concept of pointer in C language, then designed a link-list program by using pointer. For some common errors appeared when beginners designed program with C language, analyzed the wrong reasons and corrected these errors.
Key words: C language; program; pointer; link-list
摘 要:C语言是某一个实体的地址,当我们在使用C语言进行编写程序的时候,就一定会使用上指针,指针的操作是编写程序的一个点。如何更好地使用指针,将是我们进行更好的书写程序的关键。指针变量的运用是C语言程序设计的重要核心部分。程序中的数据在内存中的有效读取及程序执行效率的提高多数情况取决于是否灵活使用指针。本文旨在探索C语言程序设计实践过程中如何正确操作指针变量,从而方便操作与之关联的字符串、数组、函数间数据的传递,继而解决C语言程序设计中的许多实际问题。
关键词:C语言;指针;数组;地址
地址:在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元,在C语言中,一种数据类型或数据结构往往都占有一组连续的内存单元。用“地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址,它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。这也是引入“指针”概念的一个重要原因。因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址,也就找到了该数组或函数。这样一来,凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可。这样做,将会使程序的概念十分清楚,程序本身也精练,高效。
1 指针
所谓的指针,本质上就是地址。指针变量的值,就是地址的值,当取值运算时就是到对应的内存地址上,依照指针类型进行取值。指针是一个地址,指向的是个类型:我们知道,c语言中的类型有int,char,bool(这个不常用),一般我们使用int,char就可以满足一般的类型需求的,如果对于变量的长度过大,就是用long,float,double,关于各个类型使用的长度问题,可以使用sizeof(int)或者sizeof(long)来查看各个类型,在系统中的小。
而指针就是一个8个字节(64系统)。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。图中,设有字符变量C,其内容为“K”(ASCII码为十进制数75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A,这种情况我们称为P指向变量C,或说P是指向变量C的指针。严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。
指针指向的是地址,地址指向的是内容:
我们需要一个变量,来存储地址,这个变量的值是地址,但是我们可以通过修改变量的值,来不断地改变地址,但是,我们如果需要改变该个地址的值的话,就需要,对地址的值进行修改,而不改变地址。
C语言是计算机软件领域最为经典的编程语言之一,尤其在底层驱动、硬件控制等应用领域,更是C语言的价值所在,这是JAVA,C#等新兴高级语言所不具备的优势所在,通过C语言的指针操作系统内存,以及位运算控制系统的各个外部I/O端口,C语言被广泛应用到硬件系统的控制中,指针的应用是C语言的灵魂,指针实现了C语言的灵活性、可变性。以下对C语言中指针的应用与价值进行探讨与阐述。
C语言编程过程中,假设定义一个变量,编译时就为这个变量分配一定长度的内存空间。而在内存区每一个内存单元都有一个地址,用来标识内存单元,在地址所标识的单元存放数据。而正确使用指针变量,区分指针变量和指针的指向变量的含义和用法,判断变量与运算符的结合顺序来确定变量的数据类型以及指向变量或成员变量的类型。通过指针来访问数组元素和下标法数组元素的等价关系,作为函数参数的指针变量,可以改变所指向的主调函数变量的值。动态存储分配、对链表的创建以及相关操作都可以运用指针实现。
类成员的指针,类成员与外部变量相互比较,进行区分的方法就是它所在的域的不同,因为域的不同而决定了变量可以使用的范围,一个指向类的成员函数或者成员变量的指针,就要规范它的参数列表、返回类型,以及被指向变量或函数的域,所以使用类域限定如下:
classNJUPT{ staticdoublenumber=20000000; intnum; public: NJUPT():num(10){}; intget(){returnnum;}; doublegetNumber(){reuturnnumber;}}
在这里定义的成员指针为intNJUPT::*p;//指向int型成员变量int(NJUPt::*)p()//指向intf()型成员函数。
那么调用的方式为:cout<;
返回指针的函数,一个函数的接口是它的返回值,C语言可以自定义类型,我们使用引用作为函数的实际参数,或在函数的实际参数中使用指针。使用一个函数返回一个指针很容易将一个局部变量的地址传出来。例如:
UserType*Process(){ UserTypeut(param—list); //processut; return&;ut;//}
摘要:指针是C语言的灵魂,是C语言的精华和重要特色,理解指针的概念应从计算机存储系统硬件结构入手。它是C语言学习的重点和难点,也是学好C语言的关键,针对学生在学习指针过程中遇到的困难及使用指针过程中出现的常见错误,该文从指针的定义、指针的基本操作、指针与其他数据类型的关系等方面对指针做详细分析,以助学习者更好的理解与记忆。
关键词:C程序设计;指针;数组;函数;字符串;内存地址;变量参数
中图分类号:TP3112文献标识码:A文章编号:1009-3044(2009)35-9982-02
指针是C语言的一个重要概念。由于指针的概念比较抽象,使用起来又相对灵活,因而正确理解和运用指针就成了C语言程序设计的一个难点,掌握好指针,可以增强学生阅读C程序的能力,可以使程序变得简洁、紧凑和高效,同时也让学生对“ 驾驭了” 计算机产生一种自豪感,为日后更进一步的学习奠定良好的基础。
计算机内存中的每个存储单元,都有一个相应编号,叫做内存地址。若在程序中定义了一个变量,C编译系统就会根据定义中变量的类型。为其分配一定字节数的内存空间。同时建立一个变量名与地址间的对应关系。变量值就存放于该地址的内存单元中。而指针(即地址)也是一种数据类型,指针变量是只能存放地址类型数据的变量,我们把存放指针的变量称为指针变量,简称指针。这个变量和基本变量的不同点就在于基本类型变量内部存储了同类型的常量,而指针变量内部存储的则是“同类型变量的首地址”(所指向的变量的地址)。
在C语言中,访问数据对象一般采用直接访问的方法,而引入指针变量的目的则是用来间接访问数据对象,这种访问的特点是先找到存放数据的地址,然后通过该地址来访问数据。
指针变量的定义:基类型 *指针变量名;
此处的“*”要与指针运算符“*”区分开,前者用来标示所定义的变量是指针变量,只起到标志的作用;而后者是一个运算符,用于取该指针变量所指向的变量。无论什么样的基类型,指针变量本身所占内存大小一般是固定的,与CPU的地址总线宽度及计算机的系统总线有关。指针变量可以指向变量,也可以指向数组、字符串,还可以指向函数。使用时要切记:一定要让指针变量指向同类型的数据。
摘要: 指针是C语言的精华、重点、难点,也是C系列语言的基础。本文介绍了C语言中的指针常量和指针变量的运算规则,以及对数组的访问。
Abstract: The pointer is the essence, focus and difficult of C language which is also the basis of C language Series. This article describes the arithmetic rules of pointer constants and variables in C language, as well as the access to the address.
关键词: 指针;地址;数组;运算
Key words: pointer;address;array;operation
中图分类号:TP312 文献标识码:A 文章编号:1006-4311(2014)11-0214-02
1 绪论
C语言的精华是指针,程序设计的关键也是指针,使用指针的难点是指针的运算。用指针访问数组元素,相对比较抽象,故本文用简单的自然语言予以浅析。
2 指针变量的概念
【摘 要】高职学生的基础普遍较差,数学与英语基础较为薄弱,在碰到程序逻辑思维分析,程序代码编写及调试的过程中,往往会感到困难,这是高职C语言课程教学中的共性问题。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是学生是否掌握C语言的一个标志。同时,指针也是C语言中最为困难的一部分,学生很难正确理解基本概念。
【关键词】指针;情景创设;主动探索;协作学习;游戏案例导入
一、引言
指针是C语言中广泛使用的一种数据类型,运用指针编程是C语言最主要的风格之一。正确而灵活地运用它,可以有效地表示复杂的数据结构;能动态分配内存;能方便地使用字符串;有效而方便地使用数组;在调用函数时能得到多于1个的值;并能像汇编语言一样处理内存地址,从而变出精练而高效的程序等,这对设计系统软件是很必要的。掌握指针的应用,可以使程序简洁、紧凑、高效。指针极大地丰富了C语言的功能。每一个学习和使用C语言的人,都应当深入地学习和掌握指针。可以说,不掌握指针就是没有掌握C语言的精华。
二、教学现状
高职学生的基础普遍较差,数学与英语基础较为薄弱,在碰到程序逻辑思维分析,程序代码编写及调试的过程中,往往会感到困难,这是高职C语言课程教学中的共性问题。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是学生是否掌握C语言的一个标志。同时,指针也是C语言中最为困难的一部分,学生很难正确理解基本概念,就指针的教学谈谈自己的想法。
三、教学方法
1、情景创设教学法。课堂教学是获取知识和技能的主要阵地,应当成为培养学生独立思考的摇篮。情景创设教学方法把学习设置到简单的、有意义的问题情境中,学生通过互相合作来解决这些问题,发现隐含于问题背后的科学知识,形成让学生掌握解决问题的技能和提高自主学习的能力。例如,讲解指针的基本概念,计算机中的所有数据都是顺序存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同数据类型的值所占用的内存单元数亦不同。为了正确地访问这些内存单元。内存单元的编号也叫地址,通常也把这个地址称为指针。内存单元的指针和内存单元的内容是两个不同的概念。为让学生掌握并理解内存单元的指针和内存单元的内容,我采用了情景创设的教学方法。我们到银行去存、取款时,银行工作人员将根据我们的账号去查找存款单,找到之后在存单上写入存款、取款的金额。在这里,账号就是存单的指针,存款数就是存单的内容。这样就能让学生明白内存单元的指针和内存单元的内容之间的关系了。