指针
基础
定义指针变量
- 类型名 * 指针变量名
char * pa; // 定义一个指向字符型的指针变量
int * pb; //定义一个指向整形的指针变量
取地址运算符
- 如果需要获取某个变量的地址,可以使用取地址运算符(&)**
char * pa = &a;
**int * pb = &f;
取值运算符
- 如果需要访问指针变量所指向的数据,可以使用取值运算符( * )**
**printf("%c, %d\n", * pa, * pb);
注: * 号在不同的地方有着不同的作用,在定义指针变量时为修饰符;在取值时为运算符。这属于是符号的重用。
直接访问与间接访问
int a = 3;
int *pa = &a;
a = 4; // 直接访问
*pa = 5; // 间接访问
避免访问未初始化的指针
int *a;
*a = 123;
未初始化的指针被称为野指针,修改一个野指针的值是个危险操作,因为我们并不知道这个指针指向的内存里有什么内容,盲目修改可能会发生系统错误。
小栗子
char a = 'F';
int f = 123;
char *pa = &a;
int *pb = &f;
printf("a = %c\n", *pa);
printf("f = %d\n", *pb);
*pa = 'C';
*pb = 1;
printf("a = %c\n", *pa);
printf("f = %d\n", *pb);