c++c语言这个怎么编写

已知 int a[10]={0,1,2,3,4,5,6,7,8,9};int *p=a;,
C语言分别编程,求如下表达式的值:"
(1)p(2)p(3)p++.
(4)
(p++).(5)
(++p)。(6)++(p).(7)--(p)。(8)(p--).(9)(--p)。

有帮助的话 采纳一下

#include <iostream>
using namespace std;

int main() {
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int *p=a;  

    // (1)p  
    cout << *p << endl;  

    // (2)_p  
    cout << *(p+1) << endl;  

    // (3)p++. 
    cout << *p << endl;  
    p++;

    // (4)(p++) 
    cout << *p << endl;  
    p++;   

    // (5)_(++p) 
    p++;
    cout << *p << endl;   

    // (6)++(_p)  
    p++; 
    cout << *p << endl;   

    // (7)--(p)
    p--;
    cout << *p << endl;    
      
    // (8)(p--)  
    cout << *p << endl;    
    p--;

    // (9)_(--p)  
    p--;    
    cout << *p << endl;   
}

  • 以下回答由chatgpt基于相关博客总结生成:

    首先,我们来解释一下括号的作用。括号的作用是改变运算符的优先级,让被括号括起来的表达式先被计算。在上面这个例子中,括号的作用就是改变指针类型的优先级,让括号内的表达式优先计算,从而确定指针类型。

    那么,int (*p)[3] = a[5][3] 这个表达式具体是怎么计算的呢?我们可以将其分解为两个部分来理解:

    第一部分:int (*p)[3]

    这个表达式是一个指针类型的定义,其具体含义是“指向一个长度为3的整型数组的指针”。也就是说,p是一个指向整型数组的指针,该数组长度为3。

    第二部分:a[5][3]

    这个表达式是一个二维数组的访问,其中a是一个二维数组,第一维长度为6,第二维长度为3。在这里,我们使用了一个常数5作为第一维下标,使用了常数3作为第二维下标,从而访问了数组中的一个元素。由于该元素是一个长度为3的整型数组,因此我们可以将其地址赋给一个指向长度为3的整型数组的指针,也就是上面第一部分中定义的p。

    总结一下,上面的表达式就是定义了一个指针p,该指针指向a数组中某一个元素所在的长度为3的整型数组。这个表达式很奇怪,但是它在某些场合下是很有用的,比如说在处理二维数组时。