我正在 Linux 中用 C 语言进行一些串行通信。我正在使用文件描述符来执行此操作。由于某种原因,在 char* s = "Hello world"
之后,我可以使用 write 方法将 s
写入串行端口,没有问题。我正在使用串行监视器程序来检查另一端。但是,我无法发送任何其他类型的数据。我从写入函数中收到“错误地址”错误。
但是,我注意到如果我做了一些非常奇怪的事情:int* x = "5";
我就可以发送这个x
。我的问题是,int* x = "5"
到底是什么意思?
最佳答案
int* x = "5";
这不是有效的 C 代码。您必须将数组的值转换为 int *
,但指针的取消引用仍然会破坏对齐规则并成为未定义的行为。
int *x = (int *) "5";
最后的代码存储一个 char [2]
类型的未命名数组对象。 "5"
的值是指向其第一个元素的指针,该指针是一个 char *
。转换将 char *
转换为 int *
并将其存储在 x
中。
关于c - C 中的整数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366880/