C学习-基础:指针 数据类型 和 指针运算 小结
指针的数据类型小结
指针运算小结
指针运算是以指针变量所拥有的地址值为操作对象进行的运算。
指针运算实质上是地址的运算,它与普通变量的运算在意义上和种类上是不同的,它只能进行算术运算、关系运算和赋值运算。
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 条评论