strcmp参数含加号的含义?str1+4在C语言中代表什么?
关于C语言中
str1+4的含义解释 str1+4绝对不是把str1的ASCII值加4,这是C语言里的指针算术操作,具体含义如下:
- 在C语言中,字符串(不管是
char *str1形式的指针还是char str1[]形式的数组)本质上是指向字符数组首元素的指针。当指针与整数进行加法运算时,指针会向后偏移n * sizeof(指向类型)个字节。因为char类型的大小是1字节,所以str1+4会直接指向str1数组中下标为4的字符(也就是第5个字符,C数组下标从0开始)。 - 举个例子:如果
str1的值是"HelloStack",那么str1+4指向的是字符'o',此时strcmp(str1+4, str2)实际是比较子串"oStack"和str2的字典序。
如果你想对单个字符的ASCII值加4,写法应该是str1[0] + 4或者*(str1) + 4——这是对单个字符的数值运算,和str1+4的指针偏移操作完全是两回事。
回到你的代码,strcmp(str1+4, str2)的作用是:从str1的第5个字符开始,取这个子串和str2完整字符串做字典序比较,最终返回你提到的0、1或-1结果。
内容的提问来源于stack exchange,提问作者concreteCozy
相关产品推荐
相关产品推荐

