指针运算

指针 +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所指变量

你可能感兴趣的:(指针运算)