求解一个关于数组的有关问题

求解一个关于数组的问题
#include <stdio.h>
#define MAX 80

int main(void)
{
  char ch, buffer[MAX+1];
  int x=0;
  while ((ch=getchar())!='\n'&&x<MAX)
  buffer[x++]=ch;
   
  buffer[x]='\0'; \\这句的意思是在字符串后加上空字符能写成buffer[x+1]='\0'; 这句的x 和上面的x++ 最后一个值是同一个么?
  printf("%s\n",buffer);
  return 0;
}



------解决方案--------------------
buffer[x]='\0'为了保证最后以0结尾,保证存储的是字符串,字符串是以0为结尾的。
while ((ch=getchar())!='\n'&&x<MAX)
buffer[x++]=ch;
假设用'a'填充了0-3位即
buffer[0] = 'a'
buffer[1] = 'a'
buffer[2] = 'a'
buffer[3] = 'a'
最后一句buffer[x]='\0';表示buffer[4] = 0;
------解决方案--------------------
循环退出时 x指向数组下一个可写的位置,追加字符串结束标志
------解决方案--------------------
不是一个
buffer[x++]=ch等价于下面两条语句
buffer[x]=ch;
x++;

——————————————————————————
x++是先进行x的值操作,再进行++

比如 x=1;
cout<<x++<<endl;
输出结果为1,但这条语句进行完后x的值变为了2

————————————————————————————
++x正相反,先++,再进行x的值操作
x=1;
cout<<++x<<endl;
输出结果为2