我打电话的时候:
write_byte((uint8_t*)0);
它传递一个空指针。如何修改它以传递指向文字值0的指针?
答案 0 :(得分:3)
它传递一个NULL指针。
您无法获取常量(&0
)的地址。如果要将指针传递给值0
,则必须先将0
指定给变量。
uint8_t i = 0;
write_byte(&i);
答案 1 :(得分:1)
使用复合文字:
write_byte(&(int) {0});
答案 2 :(得分:0)
它会发送一个NULL
指针......
答案 3 :(得分:0)
在编译时无法获取文字的地址,因为文字不一定有地址。
例如,如果您编写if(0)
之类的代码,0
可能不会在任何地方分配。编译器将其转换为机器代码指令“如果为零则分支”(或者由于优化而更可能是“分支始终”)。因此,实际零点嵌入到程序代码本身中。
因此,在编译时无法知道存储文字的位置。它可以集成到程序代码中,也可以驻留在只读内存中。您无法知道哪个,因为编译器本身在将源代码转换为机器代码之前不知道。
(我相信你可能会将整数文字与字符串文字混淆,它总是有一个地址。)