分配空间 char *ptr = (char *)malloc(sizeof(char) * 100);
返回malloc返回值 默认返回void *
默认类型转换
强制类型转换
①指针之间赋值一定要是相同类型(步长)指针之间赋值(除实型float)
16进制每两位一个字节
警告:从不兼容的指针类型赋值--->不同类型指针之间赋值
★步长 长指针--->短指针 数据丢失 短--->长 取多的数据
②void * 万能指针:可以保存接收任何类型指针的值
void *ptr;
③但不能进行取值操作(void *)没有步长,需要强制类型转化*(int *)ptr
void *类型下ptr++; 默认加一个字节 (二义性)
指针和指针之间的运算:只有 - 没有 +
指针 - 指针
int *p1;
int *p2;
printf("%d\n",p2-p1);
答案为8 8×4=32字节
段错误:①野指针②对NULL指针(零地址)操作③scanf时没有&取地址
★字符串就是首字符的地址
char src[100];
memset(src,'a',sizeof(src) - 1);