字符串指针*str1-str2结果是什么
时间: 2023-05-28 14:06:52 浏览: 48
这个表达式没有意义,因为它没有定义操作符减法 "-" 的含义。如果想要计算两个字符串指针之间的距离(即它们之间相差多少个字符),可以使用标准库函数strlen()。例如,表达式strlen(str2) - strlen(str1)可以计算出str1和str2之间相差多少个字符。
相关问题
#include<iostream> using namespace std; int main() { char s1[80]="aabbbb",s2[80]="aaacddd"; char *str1=s1,*str2=s2; int d; while(*str1&&*str2) { d=*str1-*str2; if(d<0) break; str1++; str2++: } if(d==0) d=*str1-*str2; cout<<d; return 0; }改正错误此程序目的是用字符指针比较字符串s1,s2的大小
以下是修改后的程序:
```c++
#include <iostream>
using namespace std;
int main() {
char s1[80] = "aabbbb", s2[80] = "aaacddd";
char *str1 = s1, *str2 = s2;
int d;
while (*str1 && *str2) {
d = *str1 - *str2;
if (d != 0)
break;
str1++;
str2++;
}
if (d == 0)
d = *str1 - *str2;
cout << d << endl;
return 0;
}
```
修改说明:
1. 第 3 行需要加上 `;`。
2. 第 11 行的 `:` 应该是 `;`。
3. 在判断大小关系时,只需要在字符相等时判断是否继续比较即可,所以将 `if (d < 0)` 改为 `if (d != 0)`。
int StrCmp(const char *str1, const char *str2) { while (*str1 && *str1 == *str2) { ++str1; ++str2; } return *str1 - *str2; } 请详细解释一下
这段代码为一个字符串比较函数,功能是比较两个字符串 str1 和 str2 是否相等。
函数的参数为两个指向 char 类型的指针,即 const char *str1 和 const char *str2。
函数使用了一个 while 循环来比较两个字符串。循环条件为 *str1,也就是 str1 指针指向的字符不是字符串结束符 '\0'。
在循环体中,首先判断 *str1 和 *str2 是否相等,如果相等,则继续比较下一个字符。如果不相等,则直接返回 *str1 - *str2 的结果,也就是两个字符的 ASCII 码之差。
如果循环结束后还没有返回,则说明两个字符串的前面部分都相等,此时需要判断两个字符串的长度。如果 str1 和 str2 长度相等,则返回 0,表示两个字符串相等。如果 str1 的长度大于 str2 的长度,则返回一个正数,表示 str1 大于 str2。如果 str1 的长度小于 str2 的长度,则返回一个负数,表示 str1 小于 str2。
需要注意的是,这个函数并没有考虑字符串中可能存在的空字符('\0'),所以当字符串中存在空字符时,比较的结果可能不正确。