指针型数据


请输入要查询的词条内容:

指针型数据


一、有关指针的数据类型(见下表)

定义 含义

int i; 定义整型变量i。

int *p; p为指向整型变量的指针变量。

int a[n]; 定义整型数组a他有n个元素。

int *p[n]; 定义指针数组p,它由n个指向整型数据的指针元素组成。

int (*p)[n]; p为指向含n个元素的一维数组的指针变量。

int f(); f为带回整型函数值的函数。

int *p(); p为带回一个指针的函数,该指针指向整型数据。

int (*p); p为指向函数的指针,该函数返回一个整型值。

int **p; p是一个指针变量,它指向一个指向整型数据的指针变量。

二、指针运算小结

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

如:p++ p-- p+i p-i p+=i p-=i 等

实际含义如 p+i 代表地址计算: p+c*i , c为字节数,整型c=2、

实型c=4、字符型c=1。

值得注意的是:P++(或P--)所表示的是指针方向发生了改变而P+i(或P-i)表示的是指针方向不发生改变。

2、指针变量赋值

如:p=&a a为变量,p为指针变量

p=array array为数组名

p=&array

p=max max为函数名

p1=p2 p2为指针变量

注意:不能把一个整数或常数赋给p,如p=1000 同样也不能把p赋给整型变量,如i=p

3、指针变量可以赋空值

如: p=NULL; 实际NULL是整数0。

4、两个指针变量可以相减如两个指针变量指向同一个数组的元素(右图),

则 p2-p1=4-1=3但p1+p2无意义。

5、两个指针变量比较

若两个指针指向同一个数组的元素,则可以比较,

如: p1<p2 p1>p2

三、空类型指针

ANSI新标准增加了一种空类型指针,定义的一般形式为:

void * 变量名

具体使用时要做类型转换,如:

void *p; (int *)p;

相关分词: 指针 数据