gpt4 book ai didi

C 指针的大小和所指向的值不匹配

转载 作者:行者123 更新时间:2023-11-30 17:46:27 24 4
gpt4 key购买 nike

适用于 msp430 的 IAR 嵌入式工作台。选用C标准99

你好,我是指针新手,卡在一个地方。这是部分代码:

void read_SPI_CS_P2(uint8_t read_from, int save_to, uint8_t bytes_to_read)
{
uint8_t * ptr;
ptr = save_to;
...

根据我读到的有关指针的内容,我假设:

uint8_t * ptr; - 这里我声明数据指针指向什么类型(我想保存uint8_t值)

ptr = 保存到; - 在这里我分配了我想要写入的内存地址(它是0xF900,所以是int)

它给了我一个错误[Pe513]:“int”类型的值不能分配给“uint8_t *”类型的实体

问题是..为什么?将要保存的数据大小(到save_to)和内存地址的大小不能不同?

最佳答案

从语法的角度来看,您可以将 int 直接转换为改变其值的指针。但在这种情况下可能不是一个好主意或对您有帮助的东西。

您必须使用编译器和链接器支持来指示它们您想要内存中特定位置的一些数据。通常,您可以使用 #pragma location 语法(使用 IAR 工具链)执行此操作,例如:

__no_init volatile uint8_t g_u8SavingLocation @ 0xF900;

您不能简单地设置内存中指针的值并开始在该位置写入。链接器负责决定内容在内存中的位置,您可以使用 #pragma 和链接器设置文件来指示您想要实现的目标。

关于C 指针的大小和所指向的值不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19263040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com