指针的运算系列(1):指针加减整数; 指针的比较大小

简介: 指针的运算系列(1):指针加减整数; 指针的比较大小

对于指针,选择大家或多或少的都有着些许见解和认识!大部分初步了解指针了已经,要不然,还不注重指针的基础知识??也可以参考笔者前面几篇文章内容,根据书本知识来学习参考!好高骛远的看指针的运算呢??


指针的运算!


指针的(+ , -)加减整数运算


对于指针的运算应用较为广泛,但是,对于加减乘除四则运算,在指针这儿,我们却只见过指针的加减整数运算,并没有涉及指针的乘除整数运算,原因很简单:指针的本质其实还是一个地址,对地址进行乘除整数?怎么可能得出来正确的答案呢??


下面笔者在指针,*(解引用操作符)之间,详解指针的加减整数运算!


//按顺序输入各组元素
#include <stdio.h>
int main()
{
  double arr[5] = { 0 };
  double* p = arr;
  int i = 0;
  for (i = 0; i < 5; i++)
  {
  arr[i] = i + 1;             //在每次循环的基础上,将元素赋值为i+1
  printf("%lf ", *(p + i));
  }
  return 0;
}


在本段代码中,   double arr[5] = { 0 };    double* p = arr;         定义了double类型的arr[5]数组,因此指针p指向的也应该为double型,所以定义为 :  double* p = arr;


对于下面简短代码,在笔者博客前文略有涉及,描写也算较为全面,但是对于一些不愿意找的读者而言,笔者还是再来进行简单描写一边吧!


for (i = 0; i < 5; i++)
  {
  arr[i] = i + 1;             //在每次循环的基础上,将元素赋值为i+1
  printf("%lf ", *(p + i));
  }

在这个代码片段中,用for循环,实现每次循环下来 i 的值每次都增加1,然后在每次循环时候都用  i +1赋值给数组arr[];最后输出时候,用printf("%lf ", *(p + i));在这里,p+i指:每次循环数组地址都往后走i步,找到位于arr[i]上的元素位置!因为i的取值在  :   i=0;i<5;i++   范围内,因此也不担心越界问题!最后在通过  * (解引用操作符)的使用,最后通过地址找到该元素的大小数值并打印出来!


因此最后的打印结果为:


0a2653c851af460fa595bd959398a8f1.png


指针的比较大小


对于刚开始接触指针的大小比较时候,笔者也是一脸迷茫,但是,当慢慢学习接触下来发现还是挺有必要的!


下面笔者用一个代码片段在进行讲解一下!

#include <stdio.h>
#define n_ualue 5
int main()
{
  float valuer[n_ualue];
  float* vp;
  //指针的加减整数,指针的关系运算
  for (vp = &valuer[0]; vp < &valuer[5];)
  {
  *vp++ = 0;
  //printf("%f ", *vp);
  }
  return 0;
}


在这里面涉及到的内容由如下解释:

6de278e6d6694ce5bb08e7e842b7e74b.png


对于*vp ++而言;  ++的优先级高于:*   因此先进行++选项,但是对于该:  *vp ++  而言,为后置++,因此又有表达式的值仍为  vp;


在for循环中: for (vp = &valuer[0]; vp < &valuer[5];)    这个代码,不建议大家进行使用,当然笔者用该段代码仅仅是供大家参考:*vp ++  的用法而已!


因此得出来:


*vp++   跟    *(vp++)意思一样


             (*vp)++意思不一样 : (*vp)指:先跟vp解引用,在用++


我们大家都知道:随着数组下标由低到高的增长,由地址到高地址!


因此:上述代码:在for循环中:


for (vp = &valuer[0]; vp < &valuer[5];)
  {
  *vp++ = 0;
  //printf("%f ", *vp);
  }
可以改写为:
for (&valuer[n_ualues - 1]; vp >= &valuer[0]; vp--)
{
  *vp = 0;
}

到此为止,对于指针的运算系列(1):指针加减整数; 指针的比较大小,已经完美结束,读者要是有疑惑,请联系笔者进行删改!


相关文章
|
7月前
|
C语言 C++
【C++之数组与指针1】随机输入整数存入数组并用指针遍历
【C++之数组与指针1】随机输入整数存入数组并用指针遍历
|
编译器
C初阶--指针初阶(下):指针运算+指针和数组+二级指针+指针数组(上)
C初阶--指针初阶(下):指针运算+指针和数组+二级指针+指针数组(上)
|
2月前
|
人工智能
魔法指针 之 指针变量的意义 指针运算
魔法指针 之 指针变量的意义 指针运算
26 0
|
编译器
C初阶--指针初阶(下):指针运算+指针和数组+二级指针+指针数组(下)
C初阶--指针初阶(下):指针运算+指针和数组+二级指针+指针数组(下)
|
6月前
|
存储 C++
有关【指针运算】的经典笔试题
有关【指针运算】的经典笔试题
37 4
|
7月前
|
C语言
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)1
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)
207 51
|
7月前
|
C语言
在引用数组元素时指针的运算
在引用数组元素时指针的运算
59 0
|
7月前
|
C语言 C++
C语言:指针运算笔试题解析(包括令人费解的指针题目)
C语言:指针运算笔试题解析(包括令人费解的指针题目)
|
7月前
|
存储 人工智能 编译器
【重学C++】【指针】一文看透:指针中容易混淆的四个概念、算数运算以及使用场景中容易忽视的细节
【重学C++】【指针】一文看透:指针中容易混淆的四个概念、算数运算以及使用场景中容易忽视的细节
115 1
|
7月前
|
编译器
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)3
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)