1.定义
(1)地址:
- 内存单元的编号;
- 从零开始的非负整数;
(2)指针:
- 指针就是地址,地址就是指针;
- 指针变量是存放内存单元地址的变量;
- 指针的本质是一个操作受限的非负整数
2.分类
(1)基本类型的指针
int * p; //p是个变量名字,int *表示p变量只能存放int类型变量的地址
int i;
p=&i; //把i的地址发送给p,表示p指向i
把i的地址发送给p(p=&i;)等价于
- p指向i;
- 修改i的值不会影响p,修改p的值也不会影响i;
- *p=i;
(2)如何通过被调函数修改主调函数中普通变量的值?
(如修改i的值)
- 实参为相关变量的地址(&i);
- 形参为以该变量类型为数据类型的指针变量(int * p)
- 在被调函数中通过 * 形参变量名 的方式可以修改主调函数中普通变量的值(*p=100)
调用f函数不改变i的值,输出10
#include <stdio.h>
void f(int p) {
p = 100;
}
int main(void) {
int i = 10;
f(i);
printf("%d\n", i);
}
#include <stdio.h>
void f(int *p) {
*p = 100;
}
int main(void) {
int i = 10;
f(&i);
printf("%d\n", i);
}
使用指针可以修改i的值,输出100