c语言中,*p--=0什么意思?

有没有人在啊,想请教下,c语言中,*p--=0什么意思?
最新回答
远方小镇

2025-03-02 04:13:35

*p--=0表示先对指针p所指向的内存单元赋值为0,之后,将指针p的地址减1一个内存单元的大小。


可以通过如下的程序段来进行理解:

int a[]={1,2,3,4}; // 定义一个int型数组,并进行初始化
int *p=&a[2];      // 定义一个int型指针变量,并指向a[2]所在的内存单元
printf("%x\n", p); // 输出指针p的内存地址,结果为0x2cfb28
*p--=0;  // 将内存地址为0x2cfb28的内存单元赋值为0(即a[2]=0),之后内存地址减4(因为一个int类型占4个存储单元)
printf("%x\n", p); // 输出指针p的内存地址,结果为0x2cfb24

以上程序执行后数组a的值为1 2 0 4

筱冰蜜子

2025-03-02 01:54:55

首先要了解运算符的优先级,
--和*的优先级相同,但是从右向左结合,即先将指针p--,然后取指针p--后的位置的数据,赋值为0
再美都是荒涼

2025-03-02 03:07:50

'\0'是结束符~用来表示一段字符串的结束,当编译器看见'\0',就知道这个字符串结束了。'\0'也是一个字符,也占用和普通字符一样的空间大小。
*p表示内存指向p的字符的ASCII码,也可以理解成char。
*p!='\0'的意思就是,*p的值不为结束符。这样的语句多用在处理字符串时,标示结束用。
白日依山尽

2025-03-02 01:53:07

*的优先级和--优先级一样高,这二个都是自右向左执行的,就是先执行p--,然后*p,然后赋值。
霓裳梦颜

2025-03-02 07:49:49

由于--的优先级比*高一些~你可以看成*(p--)=0;p减1赋值0