[英]Arduino and Pointers to char array
需要获取指向 char 数组变量的指针。
char hostName[] = "Server1";
uint32_t *p;
p = &hostName;
我的理解可能严重缺乏,但我无法弄清楚。 我在“p = &hostName;”上收到以下错误线。
invalid conversion from 'int*' to 'uint32_t* {aka long unsigned int*}' [-fpermissive]
任何人都可以帮忙吗?
char hostname[] = "Server1;
将hostName
声明为char
数组。因此&hostname
是指向char
数组的指针。
uint32_t *p;
将p
定义为指向uint32_t
的指针。
指向char
数组的指针和指向uint32_t
的指针是不同的东西,它们是不兼容的类型。 C 不允许您将一个分配给另一个。
您可以使用强制转换强制转换,编译器将接受它。 但这会引发关于良好编程和可移植性的问题,您不应该在学习 C 的这个阶段这样做。
要获取指向数组的指针,您可以使用char (*p)[]; p = &hostName;
char (*p)[]; p = &hostName;
或char (*p)[8]; p = &hostName;
char (*p)[8]; p = &hostName;
.
但是,您可能实际上想要一个指向数组中第一个字符的指针,在这种情况下您可以使用:
char *p;
p = &hostName[0];
此外,当在表达式中使用数组但不作为sizeof
或一元&
的操作数时,它会自动转换为指向其第一个元素的指针,因此您还可以使用:
char *p;
p = hostName;
首先,根据您的理解,如果我们用 &(&(&) 运算符编写变量,它将给出地址(即数字)。 当您打印地址时,它就像一个无符号 integer。因此,您正在尝试声明无符号 integer 指针,然后用它们分配地址。
uint32_t *p; p = &hostName;
但这没有任何意义。 因为仅供参考,指针基本上是存储具有相同类型的变量的地址。 p = &hostName
这是完全错误的。 这样做时,将字符序列分配给无符号 integer 指针。 希望这可能会有所帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.