一.指针变量
C语言的两种变量:普通变量存储内容值;指针变量存储地址值
- 定义的格式: 类型名 * 指针变量名;(变量名不包含*,星号只是一个标志)
注:
(1). 指针变量专门来存储地址,禁止将一个整型值直接赋值给一个指针变量
int a,b, *p;
a = 1000;
b = 2000;
p = 4000; //错误
- 指针变量的引用
(1) “&”取地址运算符,取出普通变量的地址。
(2) “&”单目运算符,从右往左,后面只能接内容变量(变量)
(3) “*”指针运算符,取出指针遍历所指向的普通变量的内容值
(4) 指针变量需【定义】且【初始化】后再使用:
int *p; 此时指针变量p虽然定义了,但是所指向的地址是随记的
*p = 200; 危险! * p只有放在赋值号的左边是为 写,其它为读
(5) 所有的指针变量在内存中分配的字节数相同。sizeof()。都为 2
(6) &与 * 互逆; * 与[ ]等价;&与[ ]互逆
(7) 若数组作为形参,则将数组名做指针变量来处理,int fun(int *a) 等价于 int fun(int a[ ])
二. 指向数组的指针变量
1、指向数组元素的指针变量
由于数组元素和普通元素一样,所以定义指向数组元素的指针变量与定义指向普通变量的指针变量完全一样。如:
int s[10], a, b;
int b[3][6];
int *p;
p = &a;
p = &s[2];
p= &b[2][4]; //p最后指向b[2][4]
2、指向一维数组的指针常量(列地址)
(1) 在C中规定:数组名代表数组的首地址,而且是一个地址常量。如:
int a[10]