• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

C学习-基础:指针 数据类型 和 指针运算 小结

指针的数据类型小结

image.png

指针运算小结

指针运算是以指针变量所拥有的地址值为操作对象进行的运算

指针运算实质上是地址的运算,它与普通变量的运算在意义上和种类上是不同的,它只能进行算术运算关系运算赋值运算

1、指针变量加(减)一个整数

例如:p+i、p-i、p++、p--

意义:表示指针当前位置前面后面第i个数据元素位置。       

对于指向不同数据类型的指针p,则p±i所表示的实际位置的地址值是:

[p]±i×sizeof[p]

其中[p]表示指针p的地址值。如在VC++中,int类型的字节数为4,float类型的字节数为4,double类型的字节数为8,char类型的字节数为1。

2、指针++、--运算

指针++运算和指针--运算在实质上是地址的运算指针自身的地址值会发生变化。

指针++运算的意义是使指针指向下一个数据元素的位置;指针--运算的意义是使指针指向上一个数据元素的位置。

指针++运算和指针--运算的地址值变化量与指针指向的数据类型有关

3、两个指针变量可以相减

两个指针变量相减虽然实质上也是地址运算,但并非两个指针对应的地址直接相减,而是按下述公式算得一个整数。若两个指针变量指向同一数组的元素,则两者之差就是两个指针之间的数组元素个数

对于指向不同数据类型的指针,则[p]-[q]所表示的数组元素个数是:

{[p]-[q]}/sizeof[p]

其中[p]表示指针p的地址值。

两个指针变量相加没有实际意义

4、两个指针变量可以比较

两个指针变量指向同一数组的元素,则两个指针变量也可进行比较。关系表达式p<q所表示的是:当p指向的位置在q指向的位置的前方时,则关系表达式为1反之为0

若两个指针变量指向同一数组的数组元素,则两个指针变量相等是指两个指针指向同一个位置。

另外,两个指向不同数据类型的指针变量的比较没有实际意义

5、指针变量赋值

可将变量的地址赋给一个指针变量,但不能将整数赋给一个指针变量,也不能将指针变量的值赋给一个整型变量。

假设p为指针变量,则可有如下表示:

  • p=&i;    (将变量的i地址赋给p)

  • p2=p1;   (若p1和p2都为指针变量,则可将p1的值赋给p2)

  • p=&array[i];    (将数组array第i个数组元素的地址赋给p)

  • p=array;     (将数组array的首地址赋给p)

  • p=min;    (将min的入口地址赋给p,假设min为已定义的函数)

6、指针变量赋空值

指针变量赋空值,此时该指针变量不指向任何变量

如:p=NULL;  (在stdio.h文件中NULL为符号常量,值为0)


0
0
下一篇:C学习-基础:结构体类型 结构体变量 结构体数组

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。