在字符串交换代码的以下部分
end = &str[len - 1];
我不理解寻址部分。当我这样做而没有寻址部分它仍然运行但是给了我一个警告,“char类型的值不能分配给char类型的标识”。这是完整的代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[] = "This is a test";
char *start, *end;
int len;
int t;
cout << "Original " << str << "\n";
len = strlen(str);
start = str;
end = str[len - 1];
//this reverses the string
while (start < end) {
t = *start;
*start = *end;
*end = t;
start++;
end--;
}
cout << "Reversed" << str << "\n";
system("PAUSE");
return 0;
}
答案 0 :(得分:1)
我不理解寻址部分。
鉴于
char str[] = "This is a test";
char *start, *end;
len = strlen(str);
然后end
是指向char的指针,
end = &str[len - 1]; // `end` points to the last character (before the `\0`)
您必须使用&
(地址)运算符,因为end
是指针,因此必须将其分配给某些地址(此处为字符串最后一个字符的地址)。 / p>
当我没有寻址部分时,它仍然运行
我认为不会 - 你应该有编译错误
end = str[len - 1]; // invalid conversion from ‘char’ to ‘char*’
答案 1 :(得分:0)
您应该知道end
的类型为char*
,但str[len-1]
的类型为char
,因此您需要将str[n-1]
更改为{{{ 1}},所以你需要char*
。
但如果您使用&str[len-1]
,则会有一个简单的方法:
使用STL中的std :: reverse方法:
std :: reverse(str.begin(),str.end()); // str shoud是字符串类型
您必须包含“算法”库#include。
答案 2 :(得分:0)
也许这可以帮助
server {
listen 80;
root /opt/htdocs/bestflare;
index index.html index.htm;
server_name bestflare.com;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
root /opt/htdocs/usefulread;
index index.html index.htm;
server_name usefulread.com;
location / {
try_files $uri $uri/ =404;
}
}
我希望这会给你一个想法。