1.指针
用于存储变量的地址
指针是一个值为内存地址的变量。
2.&运算符(地址运算符)
&后跟一个变量名,给出变量的地址
&a,表示变量a的地址
3.*运算符(间接运算符/解引用运算符)
*后跟一个指针名或地址,给出存储在指针指向地址上的值。
a=1;p=&a;//p是指向a的指针v=*p;//将p指向的地址上的值赋给v//以上三条语句最终结果,将1赋值给v
4.声明指针
类型说明符表示指针所指向对象的类型。
*表示声明的变量是一个指针。
声明指针时使用的星号和解引用运算符不是一个东西。
通常,在声明时,星号和指针名之间有空格,解引用变量时省略空格。
int * a;char * c;
5.使用指针在函数间通信
使用指针交换两个数,例子:
#include<stdio.h>void interchange(int * u,int * v){//参数是一个指针类型int temp;temp= *u;//temp获得u指向对象的值*u = *v;*v = temp;} int main(){int x = 5, y = 10;printf("原始数据 x = %d ,y = %d\n",x,y);interchange(&x,&y);//把地址发送给函数printf("交换后 x = %d ,y = %d",x,y);return 0; }//输出: //原始数据 x = 5 ,y = 10//交换后 x = 10 ,y = 5
该函数传递的是x和y的地址,u和v将把地址作为他们的值,因此应将u、v声明为指针。
u的值是&x,所以用*u可表示x的值。
x和y的地址传递给该函数,使用指针和*运算符,该函数可以访问存储在这些位置的值并改变他们。
如果调用函数时,传递的是x的地址,那么函数中定义的形式参数必须是一个指向和x相同类型的指针。这样可以在被调函数中改变主调函数的变量。