将char *内存地址转换为void *并返回到C

克拉克

我试图将char *的内存地址作为void *传递,然后将void *的内存地址转换回其他地方的字符串。所以我有,

char *text               // text="somestring";
void *memadrs=&text;

现在,我正在尝试从空*备忘录转换为新的字符*。

对于是否已经有其他相关主题,我深表歉意,但是由于我对指针/引用它们的搜索和困惑,我找不到足够相关的东西来满足此要求。

为帮助加油!

编辑:对那些困惑的人表示抱歉,char *不是常数。

拔示巴

鉴于const char* text = "somestring"您确实应该const void*使用const void* memadrs = text这是因为"somestring"它是只读的以空值结尾的字符串文字。注意,&由于text已经是指针类型,因此不需要使用address-of运算符

const void*如果char*尝试进行后续的强制转换,使用强制转换有助于产生编译时错误这很有用,因为由于原始内存是只读memadrschar*,因此在转换为a然后修改内存时的行为将是不确定的。

AC标准参考以对此进行备份:

[C99:6.7.3 / 5]:如果尝试通过使用具有非const限定类型的左值来修改以const限定类型定义的对象,则该行为未定义。

要回退到a const char*,请使用(const char*)memadrs

我的切换char const*const char*仅仅是个人喜好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将char *内存地址转换为void *并返回到C

来自分类Dev

将char *转换为int内存地址

来自分类Dev

将内存地址转换为功能对象

来自分类Dev

Rails将内存地址转换为对象

来自分类Dev

将void函数转换为char * C ++

来自分类Dev

将void函数转换为char * C ++

来自分类Dev

C:将void(*)(void *)转换为void(*)(char *)

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将十六进制转换为整数时,程序将打印内存地址

来自分类Dev

将C ++ const char *转换为char *

来自分类Dev

C将const char *转换为char

来自分类Dev

将char数组从C ++函数返回到tcl

来自分类Dev

将变量存储在特定的内存地址C#

来自分类Dev

C hashtable Set/Get void* 唯一内存地址

来自分类Dev

将struct转换为char *然后返回

来自分类Dev

如何正确地将 vector<int> 转换为 void* 并返回到 vector<int>?

来自分类Dev

如何将内存地址(如0xc20803a000)转换为字符串?高朗

来自分类Dev

如何转换此方法以将字典从Swift返回到Objective-C?

来自分类Dev

C#将枚举转换为char

来自分类Dev

将C char数组转换为String

来自分类Dev

C ++:将char *转换为wstring

来自分类Dev

将vector <string>转换为char ** C ++

来自分类Dev

将char *转换为int * C ++

来自分类Dev

将int转换为char C公式

来自分类Dev

将Go [] byte转换为C * char

来自分类Dev

将char **转换为int C ++

来自分类Dev

将char转换为c中的float

来自分类Dev

将int转换为Char c#?