c语言中指针的定义,怎么理解C语言里的指针

1,怎么理解C语言里的指针指针类似于是电脑里面的“桌面快捷方式”,指向了实际的文件内容快捷方式(指针)指向了文件(变量)的地址 。当快捷方式(指针)里面的内容(值)变化的时候,文件(变量)的内容(值)也跟着变化 。当单独删除快捷方式(指针)的时候,文件(变量)仍然存在,并没有因此而删除
2,C语言指针定义 (1)指针变量定义的格式:类型标识符 *变量名; 如:int *point;注意:在定义intpoint;的时候 ,加粗部分的 不是取值符,而是修饰point是一个指针变量,如何确定point指向什么类型的变量呢,需要进行下一步:看非加粗部分,int则表示point指向int类型变量或保存int类型变量的地址 。(2)指针变量的初始化,先来看个实例:说明:表示该变量的类型是一个指针变量 , 指针变量名是p1而不是 p1;如果在同一行定义多个指针变量应该是:int *p1, *p2;而不是intp1, p2或者 intp1, p2;给指针变量初始化有两种方式:在定义时初始化 , 如int *p_2 = &b;先定义再初始化,如int *p1; p1 = &a;*p1是p1所指向的变量的值;一个指针变量只能指向同一个类型的变量 。(3)对于指针变量的两个运算符“*”与“&”:& 取地址运算符 //&a就代表a的地址(指的是a所在内存空间的起始地址)
3,c语言指针的概念指针是C语言中广泛使用的一种数据类型 。运用指针编程是C语言最主要的风格之一 。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序 。指针极大地丰富了C语言的功能 。学习指针是学习C语言中最重要的一环 ,  能否正确理解和使用指针是我们是否掌握C语言的一个标志 。同时,指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试 。只要作到这些,指针也是不难掌握的 。指针的基本概念 在计算机中,所有的数据都是存放在存储器中的 。一般把存储器中的一个字节称为一个内存单元 ,  不同的数据类型所占用的内存单元数不等 , 如整型量占2个单元 , 字符量占1个单元等, 在第二章中已有详细的介绍 。为了正确地访问这些内存单元,必须为每个内存单元编上号 。根据一个内存单元的编号即可准确地找到该内存单元 。内存单元的编号也叫做地址 。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针 。内存单元的指针和内存单元的内容是两个不同的概念 。可以用一个通俗的例子来说明它们之间的关系 。我们到银行去存取款时,银行工作人员将根据我们的帐号去找我们的存款单 ,  找到之后在存单上写入存款、取款的金额 。在这里 , 帐号就是存单的指针,存款数是存单的内容 。对于一个内存单元来说,单元的地址即为指针 ,  其中存放的数据才是该单元的内容 。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量 。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针 。图中 , 设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示) 。设有指针变量P , 内容为011A ,  这种情况我们称为P指向变量C,或说P是指向变量C的指针 。严格地说,一个指针是一个地址 ,  是一个常量 。而一个指针变量却可以被赋予不同的指针值,是变 。但在常把指针变量简称为指针 。为了避免混淆 , 我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量 。定义指针的目的是为了通过指针去访问内存单元 。既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址,也可以是其它数据结构的地址 。在一个指针变量中存放一个数组或一个函数的首地址有何意义呢? 因为数组或函数都是连续存放的 。通过访问指针变量取得了数组或函数的首地址 ,  也就找到了该数组或函数 。这样一来, 凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可 。这样做 ,  将会使程序的概念十分清楚,程序本身也精练,高效 。在C语言中 ,  一种数据类型或数据结构往往都占有一组连续的内存单元 。用“地址”这个概念并不能很好地描述一种数据类型或数据结构, 而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址 ,  它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确 。这也是引入“指针”概念的一个重要原因 。我们知道变量在计算机内是占有一块存贮区域的,变量的值就存放在这块区域之中, 在计算机内部, 通过访问或修改这块区域的内容来访问或修改相应的变量 。turbo c语言中, 对于变量的访问形式之一,就是先求出变量的地址,然后再通过地址对它进行访问,这就是这里所要论述的指针及其指针变量 。所谓变量的指针, 实际上指变量的地址 。变量的地址虽然在形式上好象类似于整数, 但在概念上不同于以前介绍过的整数, 它属于一种新的数据类型, 即指针类型 。turbo c中, 一般用指针来指明这样一个表达式&x的类型,而用地址作为它的值,也就是说, 若x为一整型变量, 则表达式&x的类型是指向整数的指针,而它的值是变量x的地址 。同样, 若double d;则&d的类型是指向以精度数d的指针,而&d的值是双精度变量d的地址 。所以, 指针和地址是用来叙述一个对象的两个方面 。虽然&x、&d的值分别是整型变量x和双精度变量d的地址, 但&x、&d的类型是不同的, 一个是指向整型变量x的指针, 而另一个则是指向双精度变量d的指针 。在习惯上,很多情况下指针和地址这两个术语混用了 。我们可以用下述方法来定义一个指针类型的变量 。int *ip; 首先说明了它是一指针类型的变量,注意在定义中不要漏写符号*,否则它为一般的整型变量了 。另外,在定义中的int 表示该指针变量为指向整型数的指针类型的变量, 有时也可称ip为指向整数的指针 。ip是一个变量, 它专门存放整型变量的地址 。指针变量的一般定义为: 类型标识符 *标识符; 其中标识符是指针变量的名字, 标识符前加了*号,表示该变量是指针变量, 而最前面的类型标识符表示该指针变量所指向的变量的类型 。一个指针变量只能指向同一种类型的变量, 也就是讲, 我们不能定义一个指针变量, 既能指向一整型变量又能指向双精度变量 。指针变量在定义中允许带初始化项 。如: int i, *ip=&i; 注意, 这里是用&i对ip初始化, 而不是对*ip初始化 。和一般变量一样,对于外部或静态指针变量在定义中若不带初始化项, 指针变量被初始化为null, 它的值为0 。turbo c中规定, 当指针值为零时, 指针不指向任何有效数据, 有时也称指针为空指针 。因此, 当调用一个要返回指针的函数时(以后会讲到), 常使用返回值为null来指示函数调用中某些错误情况的发生 。【c语言中指针的定义,怎么理解C语言里的指针】
4,C语言指针基本概念及其指针变量的定义是什么语言中 , 指针是一种类型,被称为“指针类型” 。指针类型描述的是一个地址 , 这个地址指向内存中另外一个对象的位置 。简单地说,指针表示的是它所指向对象的地址 。1、比较point,*point,&point三者的区别对于int*point;point:是指针变量,其内容是地址量 。*point:是指针变量的目标变量 , 即指针指向的那个变量,其内容是数据 。&point:是指指针变量本身所占据的存储地址 。2、指针与数组用指针和数组名在访问内存中的数据时,他们的表现形式是等价的,因为他们都是地址量 。数组名表示整个数组的首地址 , 可以看作是固定地址的指针,不能被赋值 。数组名无须赋初值,而指针在使用前必须赋初值 。3、字符指针和字符串字符串是一个字符数组,字符串以\0结束 。printf函数的%s格式输出字符时,是从给定的地址开始,到遇上第一个\0字符时结束 。对字符指针初始化,是将字符串的首地址赋给指针 。4、指针型函数所谓指针型函数,即返回值是指针(地址)的函数 。5、多级指针指向指针的指针(**p)就是二级指针,指向指针的指针的指针(***p)是3级指针 。多级指针类似于间接寻址 。6、指向函数的指针C语言中的函数名表示函数的首地址 , 即函数执行的人口地址 。定义形式:[存储类型][数据类型标示符](*指向函数的指针变量名)();例子:int(*fun)();//指向函数的指针,int*fun();//指针型函数,注意(*fun)括号不能少7、动态指针当需要一大片内存的时候 , 最好使用动态分配 。使用malloc函数:void*malloc(size_tsize) 。例子:int*pn=malloc(10*sizeof(int));double*pd=malloc(10*sizeof(double));

    推荐阅读