指针运算

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容