Arduino 和指向 char 数组的指针

Mis*_*sha 1 c pointers arduino

需要获取指向 char 数组变量的指针。

  char hostName[] = "Server1";
  uint32_t *p;
  p = &hostName;
Run Code Online (Sandbox Code Playgroud)

我的理解可能严重缺乏,但我无法弄清楚。我在“p = &hostName;”上收到以下错误 线。

invalid conversion from 'int*' to 'uint32_t* {aka long unsigned int*}' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

Eri*_*hil 5

char hostname[] = "Server1;声明hostName为一个数组char&hostname指向 数组的指针也是如此char

uint32_t *p;定义p为指向 a 的指针uint32_t

指向 a 数组的指针char和指向 a 的指针uint32_t是不同的东西,并且它们是不兼容的类型。C 不允许将一个分配给另一个。

您可以使用强制转换来强制转换,编译器将接受它。但这会带来关于良好编程和可移植性的问题,并且您不应该在学习 C 的这个阶段这样做。

要获取指向数组的指针,可以使用char (*p)[]; p = &hostName;or char (*p)[8]; p = &hostName;

但是,您可能实际上想要一个指向数组中第一个字符的指针,在这种情况下您可以使用:

char *p;
p = &hostName[0];
Run Code Online (Sandbox Code Playgroud)

此外,当在表达式中使用数组但不作为sizeof或 unary的操作数时&,它会自动转换为指向其第一个元素的指针,因此您还可以使用:

char *p;
p = hostName;
Run Code Online (Sandbox Code Playgroud)