1. int * p; 表示以P为变量名,存放的int型变量的地址;
如: int i = 3; p = &i; &i表示i的地址
a. p保存了i的地址
b. p不是i,i也不是p,修改p的值不影响i,修改i的值也不影响p
c. 如果一个指针变量指向了某个普通变量, 则 *指针变量 就等同于 普通变量
2. 指针就是地址, 指针变量就是存放地址的变量,相当于指针容器
3. 指针的作用:
表示一些复杂的数据结构
快速传递数据
使函数返回一个以上的值
能直接访问硬件
能够方便的处理字符串
是理解面向对象语言中的基础
4. 指针就是指地址;指针不能进行乘除加,只能减
5. 利用指针对变量进行互换实例
# include <stdio.h>= void hh(int * , int * ); int main(void) { int a = 3; int b = 5; hh(&a, &b); //将a,b的地址传给函数 printf("a = %d, b = %d\n", a, b ); return 0; } void hh(int *p, int *q ) //p和q实际代表a和b的地址 { int t; //因*p/*q为int值 所以定义t为int t = *p; //接收*p也就是a的值 *p = *q;//互换 *q = t;//互换 return; }
6. 应用指针可以直接用被调函数更改调用者的值
# include <stdio.h> /* 应用指针可以直接在被调函数中 更改调用函数的值 */ void g(int * p, int * q) { *p = 22; *q = 33; return; } int main(void) { int a = 1; int b = 2; g(&a, &b); printf("%d %d\n", a,b); return 0; }