永发信息网

怎样解释下面这段定义的函数呢?while条件是指针,什么时候才就停止循环了呢?以及^ 31的意思

答案:2  悬赏:40  手机版
解决时间 2021-03-05 20:37
  • 提问者网友:刺鸟
  • 2021-03-05 13:07
void encrypt(char *message)

{

char c;

while (*message) {

*message=*message ^ 31;

message++;

}

}
比如我给message输入值i have a question。循环为什么会到最后结束呢?^ 31意义是什么呢?
求教555~~~
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-03-05 13:24
首先,while的条件不是指针,*message是指针指向的值,是一个字符。也即是字符串的结束符'\0'.
31用16进制是 0x1F,也即是二进制的 11111, ^ 是异或操作,所以 *message^31的意思就是把*message这个字符的后5位取反。
全部回答
  • 1楼网友:不如潦草
  • 2021-03-05 13:33
执行fun(a,7); p1=a p2指向a[6] 即'g' 然后 s=*p1++= 'a' p1自加指向a[1] *p1=*p2-- = 'g' a[1] = 'g' p2->a[5] a[5] = *p2 = s = 'a' 第二次循环 s=*p1++=a[1]='g' p1->a[2] a[2] = *p1 = *p2-- = a[5] = 'a' p2->a[4] a[4] = *p2 = s = 'g' 第三次循环 s=*p1++=a[2]='a' p1->a[3] a[3] = *p1 = *p2-- = a[4] = 'g' p2->a[3] a[3] = *p2 = s = 'a' 下一次判断时,p1和p2都指向a[3], p1
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯