欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中6組指針和自增運算符結合方式的運算順序問題

 更新時間:2015年07月27日 09:43:51   作者:xingjiarong  
本文通過代碼實現分析了6種組合:* p++,(* p)++,* (p++),++* p,++( * p), * (++p),需要的朋友可以參考下

在C語言中,當指針運算符和++或者–結合時很容易分不清運算順序,在這里總結一下,下面一共分析6中組合: * p++,(* p)++,* (p++),++* p,++( * p), * (++p)。

先看段代碼以及輸出:

#include<stdio.h>
int main()
{
  int a[3]={1,3,5};
  int *p=a;
  printf("----------------1----------------\n");
  printf("%d\n",*p++);
  printf("%d\n",*p);
  int i;
  for(i=0;i<3;i++)
    printf("%d ",a[i]);
  printf("\n");
  printf("----------------2----------------\n");
  p=a;//reset data
  printf("%d\n",(*p)++);
  printf("%d\n",*p);
  for(i=0;i<3;i++)
    printf("%d ",a[i]);
  printf("\n");
  printf("----------------3----------------\n");
  a[0]=1;//reset data
  p=a;
  printf("%d\n",*(p++));
  printf("%d\n",*p);
  for(i=0;i<3;i++)
    printf("%d ",a[i]);
  printf("\n");
  printf("----------------4----------------\n");
  p=a;
  printf("%d\n",++*p);
  printf("%d\n",*p);
  for(i=0;i<3;i++)
    printf("%d ",a[i]);
  printf("\n");
  printf("----------------5----------------\n");
  p=a;
  a[0]=1;
  printf("%d\n",++(*p));
  printf("%d\n",*p);
  for(i=0;i<3;i++)
    printf("%d ",a[i]);
  printf("\n");
  printf("----------------6----------------\n");
  p=a;
  a[0]=1;
  printf("%d\n",*(++p));
  printf("%d\n",*p);
  for(i=0;i<3;i++)
    printf("%d ",a[i]);
  printf("\n");
  return 0;
}

輸出結果是這樣的:

第一組:*p++,它的運算順序是先返回 *p的值,然后p再++。
第二組:(*p)++,他的運算順序是先返回 *p的值,然后 *p的值再++,這一點從運算后的數組a的值可以看出來。
第三組:*(p++),運算順序是先返回 *p的值,然后p再++,也就是說它和 *p++的運算順序一樣。

這三組都是先返回 *p的值,區(qū)別就在于到底是p++還是 *p的值++。

第四組:++*p,先將 *p的值++,然后再返回 *p的值。
第五組:++(*p),先將 *p的值++,然后再返回 *p的值,所以它和++ *p是一樣的。
第六組: * (++p),先將p的值++,然后再返回 * p的值,和 *++p是等價的。

這三組的特點是最后都是返回 *p的值,不同點在于是 *p先++還是p++。

以上就是本文的全部內容,希望大家可以喜歡。

相關文章

  • C語言文件操作詳情(二)

    C語言文件操作詳情(二)

    這篇文章主要介紹了C語言文件操作詳情,文章基于上一篇文章的內容繼續(xù)展開C語言文件操作的相關詳情,需要的小伙伴可以參考一下
    2022-04-04
  • C++四種cast使用詳細介紹

    C++四種cast使用詳細介紹

    本文主要介紹了C++四種cast使用詳細介紹,今天我們要來講的是顯式類型轉換,C++提供了四種顯式類型轉換,分別是:static_cast、dynamic_cast、const_cast、reinterpret_cast,感興趣的可以了解一下
    2022-07-07
  • 深入理解C++中變量的存儲類別和屬性

    深入理解C++中變量的存儲類別和屬性

    這篇文章主要介紹了C++中變量的存儲類別和屬性,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • QT5實現UDP通信的示例代碼

    QT5實現UDP通信的示例代碼

    本文主要介紹了QT5實現UDP通信的示例代碼,主要使用QUdpSocket類用于實現UDP通信,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C++棧的數組實現代碼

    C++棧的數組實現代碼

    這篇文章主要介紹了C++棧的數組實現方式,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C++中與輸入相關的istream類成員函數簡介

    C++中與輸入相關的istream類成員函數簡介

    這篇文章主要介紹了C++中與輸入相關的istream類成員函數簡介,包括eof函數和peek函數以及putback函數還有ignore函數,需要的朋友可以參考下
    2015-09-09
  • C++語法中的函數重載和默認參數

    C++語法中的函數重載和默認參數

    這篇文章主要介紹了C++語法中的函數重載和默認參數,本文從語法角度通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Qt增加版本公司等信息兩種方式

    Qt增加版本公司等信息兩種方式

    在項目中生成exe或者動態(tài)庫過程中可能需要加入公司信息、版本號、說明等等,下面這篇文章主要給大家介紹了關于Qt增加版本公司等信息的兩種方式,需要的朋友可以參考下
    2024-01-01
  • 詳解C++編程中斷言static_assert的使用

    詳解C++編程中斷言static_assert的使用

    這篇文章主要介紹了C++編程中斷言static_assert的使用,斷言在debug時非常有用,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • 詳解C++中常量的類型與定義

    詳解C++中常量的類型與定義

    這篇文章主要介紹了詳解C++中常量的類型與定義,使用#define與const來定義常量是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-05-05

最新評論