C++ 分配给整数指针地址的字符指针地址
我正在尝试做一些非常简单的事情,至少我想,但没有成功。我想把整数指针指向的地址分配给char指针指向的地址。范例C++ 分配给整数指针地址的字符指针地址,c++,c,pointers,C++,C,Pointers,我正在尝试做一些非常简单的事情,至少我想,但没有成功。我想把整数指针指向的地址分配给char指针指向的地址。范例 //C++ int *pointerint; char *pointerchar; pointerchar = pointerint; // 我尝试过几种不同的方法,但都没有成功 例如: pointerchar = (char *) &pointerint; 编译器将其排除在外,但分配给指针的地址为零。这不可能是正确的。谁能告诉我如何正确地做这件事,我做错了什么。提前
//C++
int *pointerint;
char *pointerchar;
pointerchar = pointerint;
//
我尝试过几种不同的方法,但都没有成功
例如:
pointerchar = (char *) &pointerint;
编译器将其排除在外,但分配给指针的地址为零。这不可能是正确的。谁能告诉我如何正确地做这件事,我做错了什么。提前感谢您的帮助。试试(如果是C):
尝试(如果是C):
现在你有了C答案,这里有一个C++:
int *pointerint;
char *pointerchar;
//initialize pointerint
pointerchar = reinterpret_cast<char*>(pointerint);
int*pointerint;
字符*指针字符;
//初始化指针
pointerchar=重新解释(pointerint);
注意,如果你不初始化<代码> PoTeNTIT< /C>,你会遇到未定义的行为。
< P>现在你有了C答案,这里是C++:int *pointerint;
char *pointerchar;
//initialize pointerint
pointerchar = reinterpret_cast<char*>(pointerint);
int*pointerint;
字符*指针字符;
//初始化指针
pointerchar=重新解释(pointerint);
请注意,如果不初始化
指针int
,您将遇到未定义的行为。这是正确的,但为了扩展,您在那里所做的是键入指针的地址。由于pointerint
已经是一个指针,您不需要再次使用&
运算符。这里我转换指针的值,而不是指针的地址(OP所做的)。@LuchianGrigore我假设他初始化了pointerint
指针。即使没有初始化pointerint,它也会工作。你只需要把电话号码抄过来就行了。您正在更改的只是指向的数据的语义。@slugonamission未初始化的指针是无效指针,访问(甚至只是读取)无效指针是未定义的行为。这是正确的,但为了扩展,您在那里做的是键入指针的地址。由于pointerint
已经是一个指针,您不需要再次使用&
运算符。这里我转换指针的值,而不是指针的地址(OP所做的)。@LuchianGrigore我假设他初始化了pointerint
指针。即使没有初始化pointerint,它也会工作。你只需要把电话号码抄过来就行了。您正在更改的只是指向的数据的语义。@slugonamission未初始化的指针是无效指针,访问(甚至只是读取)无效指针是未定义的行为。从答案中可以看出,这确实非常简单。。。但你为什么要这么做?这通常是一个危险的操作,尤其是在新手手中。从答案中可以看出,这确实非常简单。。。但你为什么要这么做?这通常是一个危险的操作,尤其是在新手手中?你的意思是“如果你不初始化指针”。。。您只需设置pointerchar,不需要初始化它。@JimBalter true。这就是我的意思。:)我一直喜欢C++的答案,是:+1-是正确的答案,这对C也是如此,初始化指针是关键!另外,我需要减去3作为最后一个指针,以在单词中的MSB处启动char指针,byte 0.pointers?你的意思是“如果你不初始化指针”。。。您只需设置pointerchar,不需要初始化它。@JimBalter true。这就是我的意思。:)我一直喜欢C++的答案,是:+1-是正确的答案,这对C也是如此,初始化指针是关键!另外,我需要减去3作为最后一个指针,以在字的MSB处启动char指针,字节0。