目录
指针的定义
*p | 指针存放变量的地址所对应的内容 |
P | 该指针所存放变量的地址 |
&p | 指针的地址 |
- 用指针的访问是间接访问
- int *p; *p=2; 这是错误的,指针为非初始化指针,没有指向的内存
- char *message =“hello”; 定义了指向该字符串的指针
- 等同于: char *message; message=“hello”;
- **p:指向指针的指针,存放的是指针的地址
- 空指针
- 定义:值为 0 的整型常量表达式,或强制(转换)为“void*”类型的此类表达式,称为空指针常量
-
定义空指针
int *p;
p=0;
p=(void*)0;
p=0l;
p=3-3;
- NULL:头文件中,NULL为一个宏定义,指向 define NULL 0。
-
- 定义:值为 0 的整型常量表达式,或强制(转换)为“void*”类型的此类表达式,称为空指针常量
int *p = 0;
int *p = NULL; //如果有这个定义这两个表达式等价
某些系统会将空指针定义在某个区域,即非零空指针。故此空指针不代表其地址一定为0,而NULL赋值后的指针其地址一定为0;
指针的运算
*p++==0 | 先判断指针内容是否为0,在将指针指向下一个即 先用后加 |
*++P==0 | 先将指针指向下一个再取其地址的值,判断是否为哦。即 先加后用 |
字符串常量指针
“abc”[2] | 指针指向“c” |
*"abc" | 对字符串指针进行间接访问,其结果是“a” |
“abc”+1 | 讲指针地址增1,指针指向b |
应用:
- 有选择性的打印字符串
printf("%s","abcdefghijk"[n]); //n为要打印的英文字母
- 选择要打样的数量
printf("%s","**********"+n); //要打印数量为 10-n,n为指针移动的数量,即减少的数量。