首页 > 解决方案 > Arduino 和指向 char 数组的指针

问题描述

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

  char hostName[] = "Server1";
  uint32_t *p;
  p = &hostName;

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

invalid conversion from 'int*' to 'uint32_t* {aka long unsigned int*}' [-fpermissive]

任何人都可以帮忙吗?

标签: cpointersarduino

解决方案


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];

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

char *p;
p = hostName;

推荐阅读