C语言数组名如:*(a--)不是太明白
本帖最后由 kuschzzp 于 2019-12-3 18:15 编辑#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void sub(char* ,char );
int main()
{
char s[]="97531",c;
c=getchar();
sub(s,c);puts(s); // 我在运行时输入6
return 0;
}
void sub(char *a,char b)
{
while(*(a++)!='\0'); //这里我理解的是: 将指针 指向最后一个元素
while(*(a-1)<b) //这里我我的理解是: 将指针前移一位,和b比较,如果比b小,就做下面的
*(a--)=*(a-1); //就是这边不太理解了 ,说一说我的片面理解吧: 将刚才指针前移一位指向的值,赋值给数组第一个元素,然后a--就是指针指向倒数第二个元素
*(a--)=b; // 这最后一步就感觉奇怪了,前面有分号,说明不是while循环里的,最后一步把b的值给*(a--),此时这个*(a--) 我觉得应该是指向的7,就是替换掉7吧,但运行结果有7
}
我以为替换掉7,结果7还出现了2个。。。。。。。
运行结果如下:
6
9767531
--------------------------------
Process exited after 4.754 seconds with return value 0
请按任意键继续. . .
计算机是自左向右运算的
所以*(a--)=*(a-1)可以写成*a = *(a-1);a-- 匀音一刀文 发表于 2019-12-3 20:11
计算机是自左向右运算的
所以*(a--)=*(a-1)可以写成*a = *(a-1);a--
还没说完
地址没变把里面的值给换了
相当于往里面插了个数
页:
[1]