指针是一个地址,而指针变量是存放地址的变量。
定义指针变量
定义指针变量的一般形式:
类型名 * 指针变量名;
如:
1 | int * p1,* p2; |
引用指针变量
相关运算符
- & 取地址运算符,&a是变量a的地址
- * 指针运算符,*p代表指针变量p指向的对象
- 给指针变量赋值(指针变量的值只能是地址)
1 | p = &a;//把a的地址赋给指针变量p,p指向a |
- 引用指针变量指向的变量
1 | int * p,a = 10; |
这里*p出现了两次,但是二者的含义完全不同。第一行中的*p表示定义了一个指针变量*p,其前面的*只是表示该变量是一个指针变量。而第三行中的*p则代表指针变量p所指向的变量a。
- 引用指针变量的值。如:
1 | printf("%d",p);//以八进制数的形式输出指针变量p的值,如果p指向了a,就是输出a的地址,即&a。 |
示例:
1 |
|
输出:
1 | a = 100,b = 90 |
这里指针变量p1指向a,指针变量p2指向b,因此*p1等价于a,*p2等价于b
指针变量的好处
C语言中,实参变量和形参变量之间的数据传递是单向的“值传递”方式。函数的调用可以(且只可以)得到一个返回值,而使用指针变量作参数,可以得到多个变化了的值。虽然不能改变实参指针变量的值,但是可以改变实参指针变量所指向的变量的值。