0 c++
#include <iostream>
using namespace std;
int main()
{
char *fp = "Alex";
cout<<fp <<" "<<(void*)fp<<endl;
*(fp+1) = 'p';
cout<<fp <<" "<<(void*)fp<<endl;
}
Run Code Online (Sandbox Code Playgroud)
您修改了一个字符串文字.这是未定义的行为.
增加编译器的警告级别,您需要该行的警告/错误char *fp = "Alex";,因为它会创建一个指向不可变数据的非const指针.它只允许在C++中与C兼容,而且它也是一种错误.
我真的不喜欢这样回答"问题",但这是一个明显的错误:
*(fp+1) = 'p';
Run Code Online (Sandbox Code Playgroud)
fp在为其分配字符串文字时指向只读内存.因此,您无法修改fp指向的内容.如果要将字符串声明修改fp为a,char[]以便将其分配到堆栈中.
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |