通过指针引用数组 C语言 STM32串口发送程序 通过指针调用数组函数调用 指针 数组

新手菜鸟求救!
在串口中断程序中接收数据保存在cal[10]数组中,然后启动发送程序。
数组长度为10
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
cal[i] = USART_ReceiveData(USART1);
i++;
if(i == 10)
{
// Uart_SendStr(cal,10); //测试成功
UartASendStr(&cal[0],10); //没成功
i = 0;
}
}
}
发送程序如下
1.发送一字节
void Uart1_PutChar(u8 ch)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
2.发送数组(直接通过数组之间的调用,已成功)
void Uart_SendStr (u8 pucStr[], u8 ulNum)
{
u8 m;
for(m = 0;m<ulNum;m++)
{
Uart1_PutChar(pucStr[m]);
}
}
3.同样是发送数组(通过指针调用数组,测试没成功)
void UartASendStr (u8 *pucStr, u8 ulNum)
{
u8 m;
for(m=0;m<ulNum;m++)
{
Uart1_PutChar(*(pucStr++));
}
}

标题2在接收10个字节后,便可以将接收的字节发给串口调试助手
表题3就不行,我感觉这两个没啥区别吧
基础较差,希望大神指正

不应该是Uart1_PutChar(*(pucStr++));

应该是Uart1_PutChar(*(pucStr+m));追问

这两个的效果是一样的吧,都是依次加1

追答

还是不一样的,(pucStr++)指针本身变了,(pucStr+m)的话指针本身没变

温馨提示:答案为网友推荐,仅供参考