想问一些关于c++的东西

img


不懂就问 *s=“abcdef”是指针赋值字符串吗 那s究竟等于多少? 还有while循环里面只要不是0岂不是会一直执行? c-2那个2是2代表的ASCII码吗 ?下面case的1234是数还是数代表的ASCII码呢?

*s=“abcdef 是字符串赋值给字符数组 char * s 另一个含义是说s是字符数组,而字符串本质就是字符数组,s = char[7],字符串6个字符外加一个'\0'',

img


while里面是从索引0开始把s字符数组里面的字符赋值给c,前6个的时候肯定循环为真,循环到\0之后就是假了, while("\0")会跳出,'\0'的值是0.
字符变量之间的相减就是对应的ASCII对应相减。字符'2'的ascll码是50,c-'2',就是用c的ascall码值-50,求出个整数,所以case的就是整数,(char)(c+4)就是用c的ascll码+4求出新的ascll在转化成ascll码对应的字符。
https://tool.oschina.net/commons?type=4 这个是ascll码常用对照表。一张表自己推导一下应该能做出来的。