字符指针修改字符、字符数组修改字符、String类修改字符。总有一款符合你的需求 |
您所在的位置:网站首页 › 修改string中的值 › 字符指针修改字符、字符数组修改字符、String类修改字符。总有一款符合你的需求 |
1, 字符指针有初始值时,不能修改其中字符的值
#include
using namespace std;
int main()
{
char *p1 = "nihao";//字符指针赋值给字符指针只能读不能修改字符的值
char *p2 = p1;
p1[0] = 'm';//尝试修改,会报错
return 0;
}
会报错: 因为char * 字符指针,指向的数据存储在静态存储区,里面的值不允许修改。相当于const char *表示指针指向内存区域不能修改。也就是上面的字符串nihao不能修改。 2,字符指针赋值给另外一个字符指针,接受字符串的指针也只能进行读取操作。 #include using namespace std; int main() { char *p1 = "nihao";//字符指针赋值给字符指针只能读不能修改字符的值 char *p2 = p1; p2[0] = 'm';//尝试修改,会报错 return 0; }同样报错:访问权限的问题 这里原因跟上面一样,只不过将char *赋值给另一个char *,本质上还是尝试修改一个const char *.也不允许修改。 3,如果想要对字符指针里面的值进行操作怎么办呢?(最简单的方法直接看4.) - 申请动态内存(在堆中,属于动态存储区,允许修改)malloc(c)或者new(C++) - 将静态数据区数据复制到动态内存中进行修改看例子: 1)用C语言中strcpy函数 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; int main() { char *p1 = "nihao"; char *p2=new char[sizeof(p1)+1];//new 开辟一段新的内存,注意要加上1,要加上字符串末尾‘\0’ strcpy(p2, p1);//调用字符串copy函数,将静态内存区数据复制到动态内存中。 p2[0] = 'm';//对新开辟的内存进行操作 cout |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |