C语言的指针(进阶篇章之一)

指针运算

从内存存储的角度看,指针运算的本质为指针中存储的地址的运算。

切记一点就是:指针的运算包括数值和类型

一、赋值运算

  • 在进行指针的赋值运算时,要注意的是不同类型指针虽然可以赋值 ,但是编译器会警告 ,为此我们应该用强转的方式明确类型,从而避免隐式转化带来的错误。
    #include <stdio.h>
    int main(void)
    {
    int a = 0x1234;
    float pp = (float)&a; //用强转的方式说明了是float类型的
    printf("%f",a);
    return 0;
    }

二、算术运算

  • 简单的说,算术运算就是一种数值加类型的运算。
  • p++和(p)++之间的差别:p++是地址变化,(p)++是指针变量所指的数据变化。一个指针变量加一个整数不是简单的数字相加,而是连续移动若干地址。当两个指针指向同一数组时,它们可以比较大小进行减法运算。
#include <stdio.h>
int main(void)
{
   char *p = (char*)0x1234;
   printf("p      = %x\n",p);
   printf("p+1 = %x\n",p+1);  //p+1进行了算术运算
   return 0;
}
/*
2016年5月28日23:00:00(时间)
  输出得结果为:
  p      = 1234
  p+1 = 1235
*/

三、比较运算

指针的比较运算就要说的就是指针指向的地址是否相同的。

因为比较简单理解就不举例子了,其中要注意的是:
指针的运算只能发生在同类型或整型之间,不同的类型平台会警告或者停止运行的。

下章预告:指针遇到数组呢?一维数组,二维数组,又有什么呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容