string,const char*, char*转换之后还是指向同一片内存地址么?

class Same {
public:
    void reverse(const char* str)
    {
        char* A = const_cast<char*>(str);
        A[0] = ‘1‘;

        printf("%u\n",A);
        printf("%u\n",str);
        return;
    }
};

int main()
{
    Same re;
    string str = "This is nowcoder";
    printf("%u\n", &str);
    re.reverse(str.data());
    cout<< str << "  " << endl;
    return 0;
}

为什么str的值被修改了呢?

原文地址:https://www.cnblogs.com/yiyi20120822/p/11373291.html

时间: 2024-07-30 09:56:45

string,const char*, char*转换之后还是指向同一片内存地址么?的相关文章

实战c++中的string系列--string与char*、const char *的转换(data() or c_str())

在project中,我们也有非常多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串同样. 这就看到了吧,返回值是const char*,这里须要注意一下. 1 string转const char* 当然是用到上面所述的方法c_str(): string s1 = "abcdeg"; const char *k =

[转载] C++ string, const char*, char* 之间互相转换

1, string转const char* 类型 string str = "abcdef"; const char* con_str = string.c_str() 2, const char*转string 类型 直接赋值 const char* con_str = "abc"; string str(con_str); 3, string转 char* 类型 借助strcpy函数 string str= "abc"; char* chr;

const char*、char*、char* const、char[]、string的区别

1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改).2.char* p      : p is a pointer to char   意思就是可通过p指针来修改p指向的内容3.char* const p: p is a const pointer to char   意思就是p指针是一个常指针,他指向的内存地址不能变,定义的时候就得初始化   一旦给指针

CString string char* char 之间的字符转换(多种方法)

在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作(适用于MFC框架),使得MFC在做字符串操作的时候方便了很多.需要包含头文件#include <afx.h>. C++中的string用于便是字符串,功能比较强大.要想使用标准C++中string类,必须要包含#include <string>// 注意是<str

string 与char* char[]之间的转换

string 与char* char[]之间的转换,有需要的朋友可以参考下. 1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().end(),迭代器可以根据他们进行定位. 注意,与char*不同的是,string不一定以NULL('\0')结束.string长度可以根据length()得到,string可以根据下标访问.所以,不能将string直接赋值给

转:char*, char[] ,CString, string的转换

转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中: CString(typedef CStringT > CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicod

string 与char* char[]之间的转换(转)

1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().end(),迭代器可以根据他们进行定位. 注意,与char*不同的是,string不一定以NULL('\0')结束.string长度可以根据length()得到,string可以根据下标访问.所以,不能将string直接赋值给char*. 2.string 转换成 char * 如果要将string直接

c#中的char byte string 类型之间的转换

byte 是字节型,字节,就是储存数据的一种单位而已,一般用于二进制文件的读写.char 是字符型,字符,就是单个的字母.数字.符号等等.string 是字符串型,字符串,就是若干个字符. 而且 byte[] 和 char[] 都是数组类型,string 是变量类型,三者没法直接比较.要么是 byte[].char[].string[],要么 byte.char.string. 如果要定义一个字符串变量,那么应该用 string:如果是一个字符串数组,那么应该用 string[]. 1. byt

string,const char*,char*之间的相互转换

1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string 直接赋值即可 const char* c_s = "abc"; string s(c_s); 3. string转char* string s = "abc"; char* c; const int len = s.length(); c = new char[len