c - 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]
任何人都可以帮忙吗?
解决方案
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;
推荐阅读
- c++ - 反向字符串和回文
- django - 表单无效时,FormView get_context_data 不起作用
- c++ - DBus 上的 BlueZ 在不同的时间间隔内停止响应
- python - “解压”一个熊猫系列,复制 DataFrame 的其他值
- postgresql - 在 Postgres 转换中需要帮助
- javascript - 如何将选项卡“ALL”动态添加到菜单选项卡
- docker - 如何识别我的 Docker 容器正在运行的系统?我可以在 Docker 容器内传递 Docker 守护进程标签吗?
- node.js - '纱线'时'找不到模块:@babel/register'
- python - Pandas ExtensionArray 的简单示例
- html - 如何在 CSS 中创建方形渐变以使用蒙版