定义指针变量
- 类型名*指针变量名
char *pa;//定义一个指向字符型的指针变量
int *pb;//定义一个指向整型的指针变量
取地址运算符和取值运算符
- 如果需要获取某个变量的地址,可以使用取址运算符(&)
char *pa=&a;
int *pb=&f;
- 如果需要访问指针变量指向的数据,可以使用取值运算符(*)
char *pa=&a;
int *pb=&f;
printf("%c,%d\n", *pa, *pb);
综合举个栗子
#define _CRT_SECURE_NO_WARNINGS//这个是vs2017特有的,不是 vs2017的小伙伴请忽略
#include<stdio.h>
#include<string.h>
int main()
{
char a = 'w';
int f = 51;
char *pa = &a;
int *pb = &f;
printf("a=%c,f=%d\n", *pa, *pb);//这里的*pa是取值
*pa = 'c';
*pb += 1;
printf("a=%c,f=%d", *pa, *pb);//这里的*pa是取值
return 0;
}
注意,如果在打印的时候不加上*,打印出来的就是地址,地址用%p表示
栗子:
#define _CRT_SECURE_NO_WARNINGS//这个是vs2017特有的,不是 vs2017的小伙伴请忽略
#include<stdio.h>
#include<string.h>
int main()
{
char a = 'w';
int f = 51;
char *pa = &a;
int *pb = &f;
printf("a=%p,f=%p\n", pa, pb);//不加*,直接pa就是打印地址
}
避免访问未初始化的指针
#define _CRT_SECURE_NO_WARNINGS//这个是vs2017特有的,不是 vs2017的小伙伴请忽略
#include<stdio.h>
#include<string.h>
int main()
{
int *a;
*a = 123456;//这样做很危险
return 0;
}