指针 +1 表示将指针移到下一个单元 与数据类型有关
如果指针不是指向一片连续分配的空间如(数组)则没有意义
例:
char ad [ ] = {1,2,3,4,5,};
char *p = ad;
结果 *(p+1) = ad [1] = 2
两个指针相减:两个地址的差除以 sizeof 数据类型
*p++ ++的优先级高于* *p++和*(p++)没有区别,查阅资料得到正确的理解,应该理解为,由于后++优先级高于*,应该先p++,后取值,但因为是后++,所以先执行*p,然后等赋值完成以后,p再++(csdn博客)
0地址:
内存中有 0地址 不能随便改变 所以指针不应该具有0值 因此可以用0值表示特殊的事情:1、返回的指针无效 2、指针没有被真正初始化 NULL是预定定义符号 表示0地址
指针类型:
无论什么类型的指针,大小都是一样的,因为都是地址
但是指向不同类型的指针不能互相赋值,避免用错指针
指针强制转换类型 int *p = &i;void *q = (void*)p; 并没有改变p的类型 只是用void来看p所指变量