微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在地址上修改值

如何解决如何在地址上修改值

这是一个有关C语言中的指针和解引用的非常基本的问题,但这是可行的。我有以下内容

char    str2[]  = "Word2";

printf("String2: %s | Location: %p\n",str2,str2);
unsigned long add_str2 = (long) &str2;
printf("Address of str2 starts at: 0x%lx\n",add_str2);

此后,我可以确认add_str2具有正确的内存地址:

String2: Word2 | Location: 0x7ffc623b8102 
Address of str2 starts at: 0x7ffc623b8102

如何使用add_str2W修改L。我尝试过的是:

* add_str2 = 'L';

0_main.c:46:5:错误:一元“ *”的类型参数无效(具有“ long unsigned int”)

正确的方法是什么?并且有没有办法在没有指针类型的情况下修改内存地址的值,还是需要显式指针还是强制转换的指针,例如* (char *) add_str2 = 'L';

解决方法

要修改内存地址中的值,您需要使用C语言的指针。

unsigned long add_str2不是指针,因此不能这样使用。

将数字投射到指针是一个雷区,因为一些系统对不同的整数和指针使用不同的大小。例如,我目前正在使用使用6个字节宽度的指针的目标系统。

不惜一切代价避免将数字转换为指针或指针。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。