Pointers 为什么此函数返回不同的值?

Pointers 为什么此函数返回不同的值?,pointers,Pointers,我有一个函数,它接受uint16\u t变量 uint8_t myFunction(uint16_t myVar); 这种情况下,它的功能正常 myFunction(0x04); 在这种情况下,它给了我一个不同的错误结果: uint16_t* myPointer; *myPointer = 0x04; myFunction(*myPointer); 这两种寻址方式有什么区别?正如奥利弗所评论的,指针不是这样工作的 当你写道: *myPointer = 0x04; 您正在解除未初始化指针的

我有一个函数,它接受uint16\u t变量

uint8_t myFunction(uint16_t myVar);
这种情况下,它的功能正常

myFunction(0x04);
在这种情况下,它给了我一个不同的错误结果:

uint16_t* myPointer;
*myPointer = 0x04;
myFunction(*myPointer);

这两种寻址方式有什么区别?

正如奥利弗所评论的,指针不是这样工作的

当你写道:

*myPointer = 0x04;
您正在解除未初始化指针的锁定

或者-

uint16_t myVal;
myVal = 0x04;
myFunction(myVal);
不要使用指针,或者-

uint16_t* myPointer = (uint16_t*) malloc(sizeof(uint16_t));
*myPointer = 0x04;
myFunction(*myPointer);

为堆上的指针分配内存。请注意,对于在第二种方法中使用malloc(),您必须包括stdlib.h

听起来您可能对指针的工作方式有一些误解-您没有分配任何内存。我没有学习编程,我认为这应该可以工作,但我似乎应该再看一次指针。把指针编码到某个特定的内存位是一个非常糟糕的主意。谢谢!够清楚了。实际上我是这样使用的,因为我读到数组和指针实际上是一样的,当你定义一个数组时,你不需要分配内存。对于数组,如果我理解得很好,它会自动完成。当您创建没有指针的数组时,标识符充当指针,但实际数组并没有像使用malloc()那样被动态分配。还可以使用malloc()在堆上创建数组。如果你需要更多的澄清,请告诉我。