在c语言中指针的指针是什么意思

Python011

在c语言中指针的指针是什么意思,第1张

我们知道变量在计算机内是占有一块存贮区域的,变量的值就存放在这块区域之中,

在计算机内部,

通过访问或修改这块区域的内容来访问或修改相应的变量。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来指示函数调用中某些错误情况的发生。

先给你解释一下指针变量和指针,还有指针变量指向的变量的分别意思。

指针变量的值是指针,指针就是地址;指针变量指向的变量就不是地址了,而是一个具体的变量。

看一个很简单的程序段:

main()

{

int

a=5,*p=&a

printf("%d",*p)}

在这里,定义了指针变量p,指针变量p又被赋予了a的地址,此时a的地址就是指针变量p的值;而*p就是指针变量指向的变量,此处是整型变量,由于p被赋予的是a的地址,所以说这个变量就是a,即*p=a.接着因为a被赋予了5,也就是*p就是为5.

这样你就可以理解*n=0是什么意思了,也就是n是一个指针变量,这个指针变量指向的变量是一个整型变量,*n就是一个整型变量,*n这个整型变量被赋值为0;

然后是你的第二个问题:*n++,因为*和++是同优先级,并且是自右向左运算(你查下书的附录可知),所以说,相当于*(n++),意思是取了*n这个值之后,再n++,即往下一个地址去,然后接着取这个地址的值;再n++....一直往下取。

而(*n)++呢,就是先取了*n这个值之后,然后再把*n这个值自增1.

如果不明白,建议多看几遍书哦!

我就用自己的理解给你讲一下吧

指针其实就是指向一个变量的变量,具体的说,一个指针它里面保存的是一个变量的地址,而一般的变量保存的是数据,所以指针它的本质也是变量.

指向指针的指针就是一个指针它指向另外一个指针变量,它保存的是另外一个指针的地址,指向指针的指针其实和一般的指针没什么两样,只是它保存的是另一个指针,一般的指针保存的是地址,指向指针的指针访问数据时是间接访问,是通过它保存的指针来进行访问,比一般的指针多了一个中间量,它可以进行**P的运算,而一般的指针的运算为*p,

不知道我的表达能力如何???

如有不懂,请给我发消息