指针相关知识与运算
1. 指针的数据类型
(1)int i; 定 义 整 型 变 量 i ;
(2)int *p; p为指向整型数据的指针变量;
(3)int a[n]; 定义整型数据a,它有n个元素;
(4)int *p[n]; 定义指针数组P,它由n个指向整型数据的指针元素组成;
(5)int (*p)[n]; p为指向含有n个元素的一维数组的指针变量;
(6)int f(); f为返回整型函数值的函数;####
(7)int *p(); p为返回一个指针的函数;该指针返回一个整型数据;
(8)int (*P)(); p为指向函数的指针,该函数返回一个整型值;
(9)int **P; p是一个指针变量,它指向一个指向整型数据的指针变量。 ####
##指针变量的运算 ##
指针变量加(减)一个整数###
c语言中规定,一个指针变量加(减)一个整数并不是简单的将指针变量的值加(减)一个整数,而是将该指针变量的原值(是一个地址)和它指向的变量锁占用的内存单元字节数相加减。如:p+i代表地址计算:p+c*i。其中,c为字节数。
两个指针变量相加减
如果两个指针变量都指向同一个数组中的元素,则两个指针变量值之差是两个指针之间的元素个数。
两个指针变量比较
若两个指针指向同一个数组元素,则可以进行比较。指向前面的元素指针变量小于指向后面元素的指针变量,其值为0或1(真或假)
指针变量的赋值
p= &a; 表示将变量a的地址赋给p;
p= arry, 表示将数组arry首元素地址赋给P;
p= &arry[i]; 表示将数组arry第个元素的地址赋给p;
p= max, 表示将max的入口地址赋给p,其中max为已定义的函数;
p1= p2, 表示将p2的值赋给p1,其中p1和p2都是指针变量;
p= NULL,不指向任何变量的指针变量为空指针。