请问while后括号里是什么意思,不都是不等式之类的吗.这个程序是为了复制字符串.

img

请添加正文描述,长度需大于30个字符!
请添加正文描述,长度需大于30个字符!
请添加正文描述,长度需大于30个字符!

第45行while(*from) ==> while(*from != '\0')

from.size()就可以了吧(我没学指针,不对勿喷)

*to++ = from++,由于的优先级大于++,所以while里面的括号的语句与下面同等:



*to = *from;
to++;
from++;

由于指针运算符*用到指针变量上时,就会返回它所指向的原值。

int i = 0;
int *p = &i;//创建指针,&运算符取地址
std::cout<< *p <<std::endl; //由于指针p指向i,所以这个语句等同于std::cout<< i <<std::endl;

当对指针使用加号或减号运算符时,将会变动它指向的地址;


int i[10] = {1,2,3,4,5,6,7,8,9,10};
int *p = &i;//由于数组的本质就是指针(数组就是指针),数组的初始指向的值时i[0],所以p指向i[0]
p++;//此时p指向下一个元素(将p加1使p指向i[1],将p加2将会指向p[2]
p--;//此时p指向上一个元素,重新指回i[0]。(如果p减去2那么p就不再指向数组)

由于*运算符的优先级等于++,而运算符顺序时从右到左,所以++会先将指针的地址指向下一个元素,再返回原值,=运算符使要被to指针所指向的元素等于from指针所指向的元素(很拗口,多读几遍就懂了),然后while循环检测from指针的原值是否为'\0',由于c语言的判断方式是判断表达式的返回的值是否为0,为0就判断为是,否则判断为否。而字符'\0'所对应的ASCII码(字符的int值)就是0,所以这就可以判断出from是否到结尾,这样就完成了字符串的复制。