c - C 中的整数指针?

标签 c pointers serial-port

我正在 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/

相关文章:

计算一个整数与自己相等的次数,然后计算百分比

c - fopen()、fclose() 究竟是如何工作的?

c 一个数组到另一个数组的大小

c - 使用指针等于两个数组的函数

python - DMM、Python 和串口 : During a loop - the communication is suddenly stops

c# - 从串口解析/格式化数据 - C#

c++ - C++ 应用程序中的静态数据内存限制

java - 如何从 jna 引用指针检索 java 类

c++ - wcscat_s 函数 - 缓冲区错误

android - 在 Android 上访问 native 串口