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)
任何人都可以帮忙吗?
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)
归档时间: |
|
查看次数: |
2685 次 |
最近记录: |