gpt4 book ai didi

c - Arduino 和指向字符数组的指针

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:13 29 4
gpt4 key购买 nike

需要得到一个指向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)[8]; p = &hostName;.

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

char *p;
p = &hostName[0];

此外,当数组用于表达式,但不是作为 sizeof 或一元 & 的操作数时,它会自动转换为指向其第一个元素的指针, 所以你也可以使用:

char *p;
p = hostName;

关于c - Arduino 和指向字符数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58532728/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com