gcc编译出现:error: invalid operands to binary & (have ‘char *’ and ‘int *’)

本文通过一个简单的C语言程序示例展示了如何使用指向变量的指针,并详细解析了一个常见的编译错误——尝试将char*和int*混用在printf函数中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 /*************************************************************************
 2     > File Name: ptr_variable.c
 3     > Author: Mr.Yang
 4     > Purpose:演示指向变量的指针 
 5     > Created Time: 2017年06月03日 星期六 08时47分33秒
 6  ************************************************************************/
 7 
 8 #include <stdio.h>
 9 #include <stdlib.h>
10 
11 int main(void)
12 {
13         int a = 1000;
14         printf("a的地址为:%d\n",&a);
15 
16         int *p;
17         *p = 5;
18         printf("指针p的地址为:%d\n"&p);
19 
20         return 0;
21 }

错误描述如下:

1 ptr_variable.c: In function ‘main’:
2 ptr_variable.c:18:37: error: invalid operands to binary & (have ‘char *’ and ‘int *’)
3 printf("指针p的地址为:%d\n"&p);

说明:错误出现在main函数,第18行,错误类型二进制操作数无效,printf函数中char *和int *并列了,错误的代码为printf("指针p的地址为:%d\n"&p);仔细查看,可知道中间少了一个逗号。

转载于:https://www.cnblogs.com/yanglai/p/6936244.html

Arduino:1.8.19 (Windows 10), 开发板:&quot;ESP32 Dev Module, Disabled, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None, Disabled&quot; sketch_may09a:87:5: error: &#39;int index&#39; redeclared as different kind of symbol int index = 0; ^~~~~ In file included from c:\users\administrator\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\string.h:24, from C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\cores\esp32/esp32-hal.h:29, from C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\libraries\Wire\src/Wire.h:29, from C:\Users\Administrator\Documents\Arduino\sketch_may09a\sketch_may09a.ino:1: c:\users\administrator\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\strings.h:64:7: note: previous declaration &#39;char* index(const char*, int)&#39; char *index(const char *, int) __pure; /* LEGACY */ ^~~~~ sketch_may09a:93:6: error: redefinition of &#39;void setup()&#39; void setup() { ^~~~~ C:\Users\Administrator\Documents\Arduino\sketch_may09a\sketch_may09a.ino:18:6: note: &#39;void setup()&#39; previously defined here void setup() { ^~~~~ sketch_may09a:141:6: error: redefinition of &#39;void loop()&#39; void loop() { ^~~~ C:\Users\Administrator\Documents\Arduino\sketch_may09a\sketch_may09a.ino:42:6: note: &#39;void loop()&#39; previously defined here void loop() { ^~~~ C:\Users\Administrator\Documents\Arduino\sketch_may09a\sketch_may09a.ino: In function &#39;void loop()&#39;: sketch_may09a:149:18: error: invalid types &#39;int [500][char*(const char*, int)]&#39; for array subscript rawBuffer[index] = rawValue; ^ sketch_may09a:150:23: error: invalid types &#39;int [500][char*(const char*, int)]&#39; for array subscript filteredBuffer[index] = filteredValue; ^ sketch_may09a:151:24: error: invalid types &#39;long unsigned int [500][char*(const char*, int)]&#39; for array subscript timestampBuffer[index] = millis(); ^ sketch_may09a:157:23: error: invalid operands of types &#39;char* (*)(const char*, int)&#39; and &#39;const int&#39; to binary &#39;operator%&#39; index = (index + 1) % bufferSize; ~~~~~~~~~~~~^~~~~~~~~~~~ &quot;MAX30105.h&quot; 对应多个库 已使用: C:\Users\Administrator\Documents\Arduino\libraries\SparkFun_MAX3010x_Pulse_and_Proximity_Sensor_Library 未使用:C:\Users\Administrator\Documents\Arduino\libraries\MAX3010x_Sensor_Library exit status 1 &#39;int index&#39; redeclared as different kind of symbol 在文件 -&gt; 首选项开启 &ldquo;编译过程中显示详细输出&rdquo;选项 这份报告会包含更多信息。
05-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值