美文网首页C语言基础学习
《C语言15—指针的递增递减和比较》

《C语言15—指针的递增递减和比较》

作者: 竹予青青 | 来源:发表于2019-03-20 11:40 被阅读23次

2019年3月20日星期三 晴

(声明:理论知识部分来自菜鸟教程网站!)
今日学习内容:
(上接《C语言基础知识学习14》中的指针的算术运算。
(4.1.1)递增一个指针
我们喜欢在程序中使用指针代替数组,因为变量指针可以递增,而数组不能递增,因为数组是一个常量指针。下面的程序递增变量指针,以便顺序访问数组中的每一个元素:

#include <stdio.h>

const int MAX = 3;

int main ()
{
   int  var[] = {10, 100, 200};
   int  i, *ptr;

   /* 指针中的数组地址 */
   ptr = var;
   for ( i = 0; i < MAX; i++)
   {

      printf("存储地址:var[%d] = %x\n", i, ptr );
      printf("存储值:var[%d] = %d\n", i, *ptr );

      /* 移动到下一个位置 */
      ptr++;
   }
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

存储地址:var[0] = bf882b30
存储值:var[0] = 10
存储地址:of var[1] = bf882b34
存储值: var[1] = 100
存储地址:of var[2] = bf882b38
存储值:var[2] = 200

(补充:%x表示以十六进制形式输出整数。)

(4.1.2)递减一个指针

同样地,对指针进行递减运算,即把值减去其数据类型的字节数,如下所示:

#include <stdio.h>

const int MAX = 3;

int main ()
{
   int  var[] = {10, 100, 200};
   int  i, *ptr;

   /* 指针中最后一个元素的地址 */
   ptr = &var[MAX-1];
   for ( i = MAX; i > 0; i--)
   {

      printf("存储地址:var[%d] = %x\n", i-1, ptr );
      printf("存储值:var[%d] = %d\n", i-1, *ptr );

      /* 移动到下一个位置 */
      ptr--;
   }
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

存储地址:var[2] = 518a0ae4
存储值:var[2] = 200
存储地址:var[1] = 518a0ae0
存储值:var[1] = 100
存储地址:var[0] = 518a0adc
存储值:var[0] = 10

(4.1.3)指针的比较
指针可以用关系运算符进行比较,如 ==、< 和 >。如果 p1 和 p2 指向两个相关的变量,比如同一个数组中的不同元素,则可对 p1 和 p2 进行大小比较。

下面的程序修改了上面的实例,只要变量指针所指向的地址小于或等于数组的最后一个元素的地址 &var[MAX - 1],则把变量指针进行递增:

#include <stdio.h>

const int MAX = 3;

int main ()
{
   int  var[] = {10, 100, 200};
   int  i, *ptr;

   /* 指针中第一个元素的地址 */
   ptr = var;
   i = 0;
   while ( ptr <= &var[MAX - 1] )
   {

      printf("Address of var[%d] = %x\n", i, ptr );
      printf("Value of var[%d] = %d\n", i, *ptr );

      /* 指向上一个位置 */
      ptr++;
      i++;
   }
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Address of var[0] = bfdbcb20
Value of var[0] = 10
Address of var[1] = bfdbcb24
Value of var[1] = 100
Address of var[2] = bfdbcb28
Value of var[2] = 200


今天早上就先到这里了,晚上看看有没有时间再更一点。下一个知识点是“指针数组”。现在要去吃饭然后准备其他事情了。


Weif
2019年3月20日星期三 晴

相关文章

  • 《C语言15—指针的递增递减和比较》

    2019年3月20日星期三 晴 (声明:理论知识部分来自菜鸟教程网站!)今日学习内容:(上接《C语言基础知识学习1...

  • Golang学习笔记4——控制语句

    1.基础知识补充(指针、递增递减语句) 指针go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运...

  • C程序设计语言 2.8 自增运算符与自减运算符

    C语言提供了两个用于变量递增与递减的特殊运算符。自增运算符++使其操作数递增1,自减运算符使其操作数递减1。我们经...

  • 1.2.17_C++ ++ 和 -- 运算符重载

    C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符...

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

  • JavaScript操作符

    1.递增与递减操作符 前置递增和递减操作时,变量的值都是在语句被求值之前改变的 后置递增和递减操作是在包含他们的语...

  • 视唱4

    1到7的递增 12 大二度 13大三度 后面递减 21 31 后面14 15 16 17 后面巩固递增 后面递减 ...

  • javascript基础2运算符和if else switch

    js运算符为加减乘除,取余,浮点运算,其中浮点运算注意并不相等。 前置递增递减和后置递增递减 比较运算符 if判断...

  • javascript操作符

    一元操作符 只能操作一个值得的操作符叫做一元操作符 1.递增和递减操作符 递增和递减操作符借鉴于c,具有前置型...

  • 3.5.1 一元操作符

    只能操做一个值的操作符叫做一元操作符1 递增和递减操作符递增和递减借鉴与C,而且各有两个版本:前置型和后置型。前置...

网友评论

    本文标题:《C语言15—指针的递增递减和比较》

    本文链接:https://www.haomeiwen.com/subject/fvaamqtx.html