当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

C语言中的指针是什么详细说明

更新:02-02 整理:39baobao.com
字体:

[宝宝语言最佳期和关键期是什么时候]语言是人类开展思维活动,进行交流的重要工具,是人类信息的主要载体。而人类优秀的语言能力不是天生的,而是后天科学、系统、适时训练的结果。所以父母一定要抓住宝宝学习的关键...+阅读

指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。

同时,指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。 地址指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍。

为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。

我们到银行去存取款时, 银行工作人员将根据我们的帐号去找我们的存款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数是存单的内容。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。

图中,设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A,这种情况我们称为P指向变量C,或说P是指向变量C的指针。 严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。

定义指针的目的是为了通过指针去访问内存单元。 既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址,也可以是其它数据结构的地址。在一个指针变量中存放一个数组或一个函数的首地址有何意义呢? 因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址,也就找到了该数组或函数。这样一来,凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可。

这样做,将会使程序的概念十分清楚,程序本身也精练,高效。在C语言中,一种数据类型或数据结构往往都占有一组连续的内存单元。 用“地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址,它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。

这也是引入“指针”概念的一个重要原因。 变量的指针和指向变量的指针变量 变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。 为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量。

因此,下面两个语句作用相同: i=3; *i_pointer=3; 第二个语句的含义是将3赋给指针变量i_pointer所指向的变量。

本文地址:https://www.39baobao.com/show/29_34836.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

什么是电脑语言有没有专门的书来介绍所有的电脑软件,都是用电脑语言编写出来的。无论是Office,Windows,Linux以及Sohu里的网页,还是本软件,都是由人用电脑语言精心编写而成。 大致说来,从人的易用性来分,电脑语言好...

linux下c语言编程实在点,给你些命令操作操作,不过好象有点多,哈哈 Linux/Unix常用命令 1、目录操作 和DOS相似,UNIX采用树型目录管理结构,由根目录(/)开始一层层将子目录建下去,各子目录以 / 隔开。...

关于linux下的c语言编程从你的提问来看,概念比较混乱: 1.为什么要使用make?你vim了makefile/Makefile档案吗? 2.cd make是转到“make”目录(linux中惯用,相当于windows下的文件夹),你都没建立“make”目录,...

在Linux下用C语言编程4。守护进程的创建 如果你在DOS时代编写过程序,那么你也许知道在DOS下为了编写一个常驻内存的程序我们要编写多少代码了.相反如果在Linux下编写一个"常驻内存"的程序却是很容易...

linux下编写一个c语言程序实现不知道你要提取到哪里,自作主张把提取出内容放入到txt文档中。 输入文件:in.txt 输出文件:out.txt 代码如下:已在GCC测试。 #include int main(int argc, char *argv[]) { char...

请问C语言中的 const char是什么意思这个一个名为map的常量指针,这个指针是指向一个二维数组font[0][0], unsigned char *map是定义一个无符号型char指针, *map = &fornt[0][0]是取fornt数组的地址,并将地址值赋给...

C语言中char和const char的区别C 语言中char* 和const char*的区别: 一、含义的区别 char* 表示一个指针变量,并且这个变量是可以被改变的。 const char*表示一个限定不会被改变的指针变量。 二、模式的区...

C语言strcmp函数是什么样的代码strcmp简介: 函数原型int strcmp(const char *str1,const char *str2); 其作用为 将str1的各个字母的ASCII码与str2的进行比较。 若str1>str2则返回整数,若str1=str2返回0,否则,...

C语言中 strcmp是什么函数函数名: strcmp 功 能: 串比较 用 法: int strcmp(char *str1, char *str2); 程序例: #include #include int main(void) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int pt...